SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.04.2009 16:27:00

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Двойная сортировка и filesort =(

Есть запрос:

SELECT *
FROM `topic`
WHERE `gid` =1
AND `fid` =6
AND `st` != 'TRASH'
ORDER BY `pinned` ASC , `last_post_time` DESC


Для таблицы:
CREATE TABLE `topic` (
  `gid` int(8) NOT NULL,
  `id` int(8) NOT NULL auto_increment,
  `fid` int(8) NOT NULL,
  `aid` int(8) NOT NULL,
  `aname` varchar(50) NOT NULL,
  `name` varchar(200) NOT NULL,
  `text` text NOT NULL,
  `date` datetime NOT NULL,
  `last_post_time` datetime NOT NULL,
  `last_poster_id` int(8) NOT NULL,
  `last_poster_name` varchar(25) NOT NULL,
  `last_post_id` int(8) NOT NULL,
  `posts` int(8) NOT NULL,
  `views` int(8) NOT NULL,
  `st` enum('OPEN','CLOSE','PRIVATE','PRIVCLOSED','TRASH') default NULL,
  `pinned` enum('da','net') NOT NULL,
  `fpin` enum('da','net') NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `gid` (`gid`,`fid`,`st`,`pinned`,`last_post_time`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=142427 ;


Ну и EXPLAIN запроса:
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     ref     gid     gid     8     const,const     1     Using where; Using filesort

И вот ещё один беспокоящий меня запрос:
SELECT * FROM `topic` WHERE `gid`=43 AND `st` != 'TRASH' AND (`st` != 'PRIVATE' OR `fid` IN (5, 7)) ORDER BY `pinned` ASC, `last_post_time` DESC


И его EXPLAIN:
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     ref     gid     gid     4     const     31     Using where; Using filesort

Вот собственно и что делать? Разве конструкция ORDER BY по 2 полям в разных направлениях не использует индексы? и как собственно решать? Завести служебное поле, в котором суммировать данные этих двух полей так, чтобы делать ORDER BY по одному полю и один раЗ?!
Во втором запросе как я понимаю вообще не правильно построены условия, точнее они построены так, что никакой индекс не сработает, да? Если можно предложите как мне их привести в более приемлимый вид!
Заранее спасибо за ответы.

Отредактированно Proger (11.04.2009 17:08:44)

Неактивен

 

#2 12.04.2009 15:32:19

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Двойная сортировка и filesort =(

А можно попросить еще дамп из десятка-другого строчек?

Неактивен

 

#3 13.04.2009 00:28:49

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

INSERT INTO `topic` VALUES(4, 3109, 7, 31051, 'Vasya', 'Рассказ', 'вот такой вот блин рассказ))', '2008-10-16 05:52:52', '2008-10-16 10:56:57', 3124, 'Alex34', 467, 2, 3, 'OPEN', 'net', 'da');
INSERT INTO `topic` VALUES(1, 1126, 3, 10021, 'Zim11', 'Планы на лето', 'На дачу и жрать шашлыг <img src="img/smilies/smile.png" width="15" height="15" alt="smile" /> Вот такие вот планы <img src="img/smilies/smile.png" width="15" height="15" alt="smile" /> А у вась?)))', '2009-04-11 04:11:35', '2009-04-11 04:11:35', 0, '', 0, 0, 4, 'OPEN', 'net', 'net');
INSERT INTO `topic` VALUES(1, 991, 5, 7442, 'Kranik', 'Ночь', 'брррррррр, ночь. скучно...', '2009-01-06 21:37:21', '2009-01-11 00:44:11', 7542, 'Gogi', 949, 41, 2, 'PRIVATE', 'net', 'net');
INSERT INTO `topic` VALUES(4, 31, 100, 8741, '=_=', '19 способов убить себя об стену', '<span style="color: royalblue">Бойан полный, но всё же <img src="img/smilies/smile.png" width="15" height="15" alt="smile" />)</span><br /><br /><br />Вот некоторым часто рекомендуют убить себя об стенку. Но пока что-то никто не смог это осуществить. Я так думаю, что просто никто толком не знает как, поэтому и написал нижеследующую инструкцию. <br /><br />Итак, существует несколько возможных способов осуществления подобного суицида...', '2008-10-06 19:46:53', '2008-10-06 19:46:53', 0, '', 0, 0, 1, 'OPEN', 'net', 'net');
INSERT INTO `topic` VALUES(1, 10007, 5, 10021, 'Zim11', 'Кто возьмёт в разработку модули?', 'Собственно как и обещал тем кто хочет взять в разработку модули предлагаю скачать этот пак (3 кб): [link:10023124]<br />В нём реально действующие 2 файла модуля правил форума (вывод и админка) и краткая инструкция к ним.<br /><br />Для начала в ответе напишите какой модуль берёте или несколько модулей.<br />По возникающим вопросам в эту же тему обращайтесь. Только по теме прошу писать...', '2009-02-23 12:46:45', '2009-02-23 12:46:45', 0, '', 0, 0, 7, 'PRIVATE', 'net', 'net');

Отредактированно Proger (13.04.2009 00:29:27)

Неактивен

 

#4 13.04.2009 11:10:53

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Двойная сортировка и filesort =(

Начнем с того, что построенный индекс не влияет на сортировку запроса, даже, выполненный в одну сторону:

Код:

 EXPLAIN SELECT *
FROM `topic`
FORCE INDEX ( gid )
ORDER BY `pinned` ASC , `last_post_time` ASC 

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     ALL     NULL     NULL     NULL     NULL     5     Using filesort

Теперь пробуем так:

Код:

ALTER TABLE `topic` DROP INDEX `gid`;
ALTER TABLE `topic` ADD INDEX `for_sort` ( `pinned` , `last_post_time` ) ;
ALTER TABLE `topic` ADD INDEX `for_search` ( `gid` , `fid` , `st` ) ;
ANALYZE TABLE `topic`;

EXPLAIN SELECT *
FROM `topic` FORCE INDEX (for_sort)
ORDER BY `pinned` ASC, `last_post_time` ASC;

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     index     NULL     for_sort     9     NULL     5      

EXPLAIN SELECT *
FROM `topic` FORCE INDEX (for_sort)
ORDER BY `pinned` ASC, `last_post_time` DESC;

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     ALL     NULL     NULL     NULL     NULL     5     Using filesort

explain SELECT *
FROM `topic` FORCE INDEX (for_sort, for_search)
WHERE `gid` =1
AND `fid` =6
AND `st` != 'TRASH'
ORDER BY `pinned` ASC, `last_post_time` ASC

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     topic     ref     for_search     for_search     8     const,const     1     Using where; Using filesort

Из этих опытов делаем выводы:
1. Двунаправленной сортировке все равно нужен filesort.
2. Для сортировки без filesort помимо одного направления поиска нужен свой ключ
3. Оптимизатор MySQL выбирает из двух возможных индекс именно для поиска, предпочитая сортировать результат через filesort, даже однонаправленный.

В связи с этим вопрос: зачем Вы хотите оптимизировать запрос? Вам не нравится время его выполнения или слово filesort в результатах explain? Если второе - то оставьте, filesort при десятке найденных записей не страшен. Если первое, то напишу пару запросов - у них менее красивый explain, но на большом объеме данных могут выполняться быстрее, нужно проверять.

Неактивен

 

#5 13.04.2009 23:24:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Я тоже немножко встряну smile

В этой конструкции мне больше всего не нравится «!= TRASH», оно автоматически приводит к тому, что
индекс используется как RANGE. Как следствие, сортировка всегда происходит через filesort. Замена
на IN (...) даст возможность использовать сортировку на первом куске. DESC, к сожалению, использовать
не удастся, т.к. MySQL не умеет создавать ключи в обратном порядке (не смотря на то, что понимает
соответствующий синтаксис). Но односторонняя сортировка будет использовать индекс.

Неактивен

 

#6 14.04.2009 01:16:24

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Ох как расписали smile Спасибо. Подробно!

Magz, время выполнения в 20 раз больше чем у других запросов, но и таблица пока не особо большая, потому я и обеспокоился. Неисправны индексы или логика приложения...

paulus, то есть в IN мне перечислить все нужные значения, кроме TRASH соответственно, я правильно понял? Попробую создать тогда вариант индекса, который будет объединять эти поля в одно... точнее просто заведу "служебное" поле для сортировки только один раз.

Да и я что-то не понял, но разве не надо для подобных запросов делать ОДИН индекс, который включает и поля входящие в WHERE и в ORDER BY? Разве нужно делать 2 индекса по этим частям запроса??? о.О

Неактивен

 

#7 14.04.2009 12:18:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Про два индекса я ничего не говорил, на таблице используется только один индекс smile

Неактивен

 

#8 14.04.2009 12:47:07

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Спасибо за помощь, уже придумал решение, filesort ушел гулять smile

Неактивен

 

#9 14.04.2009 22:12:18

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Да но не надолго. Все было прекрасно в теории а на практики любой ORDER BY вызывает файлсорт, даже если ORDER BY один и идет в направлении ASC.

Собственно может у вас есть опыт как вывести темы форума отсортировав, так чтобы прикпреленные были сверху и потом отсортировать по дате эти темы? Смотреть другие движки прошу не предлагать. Смотрел - толку мало. Все запутано жутко.

Может ХП или VIEW поможет?

Особенно я встал ступором вспомнив про данный запрос:

SELECT * FROM `forum`.`topic` WHERE `gid`=1 AND `st` != 'TRASH' AND (`st` != 'PRIVATE' OR `fid` IN (5, 7)) ORDER BY `pinned` ASC, `last_post_time` DESC LIMIT 0,25

Запрос выводит Ленту тем с учетом доступа человека к приватным форумам.

Кстати разницы писать != 'TRASH' или IN ('OPEN', 'PRIVATE'..) я не увидел, индексы используются и там и там (это я про другие запросы, но тоже в скрипте форума).

Собственно ваши предложения по решению этой задачи =\\

Неактивен

 

#10 14.04.2009 23:46:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Может, немного реструктуризовать табличку? А то у Вас часть данных битовая  (pinned),
а часть — «в одном флаконе» (st). Логичнее сделать отдельные флажки «private»,
«erased» и т.п. Тогда не надо будет делать страшных зверей типа PRIVCLOSED.

А с индексом, к слову сказать, может быть сделать pinned «по смыслу» логическим совсем?
тогда 1 = прикреплена, 0 = не прикреплена, и (о, чудо wink ) сортировка нужна в ту же сторону,
что и дата.

Неактивен

 

#11 15.04.2009 03:11:43

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Во блин и не подумал как-то ... наверное так и сделаю, а то помимо PRIVCLOSED ещё один зверь лез на создание. А так как то и проще будет...

Кстати так даже лучше... ведь статус TRASH значит что тему сунули в корзину, а если её вернут я не знаю OPEN она или CLOSED...

Сижу меняю структурку...отпишусь коль чего не получится опять с индексами. Спасибо за советы!!!

Отредактированно Proger (15.04.2009 04:16:09)

Неактивен

 

#12 15.04.2009 04:13:52

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Ну вот сел... реализовал частично что получил.

Теперь Лента форума выводится корректно (также как и раньше, и мы получаем желаемый результат) запросом:

SELECT * FROM `forum`.`topic` WHERE `gid`=1 AND `erased` = 0 AND (`private` = 0 OR (`private` = 1 AND `fid` IN (5, 7))) ORDER BY `notpinned`, `last_post_time` DESC


Индекс к этому делу такой: KEY `for_lenta` (`gid`,`erased`,`private`,`fid`,`notpinned`,`last_post_time`)

Только я понимаю что он неработает и дает filesort потому что эти скобки мешают (`private` = 0 OR (`private` = 1 AND `fid` IN (5, 7))), но что тут делать я никак не пойму. Как тут выкручиватся... по условию задачи я показываю спокойно неприватные темы и приватные в форумах 5, 7 (туда пользователю дан доступ), но в 8, 10, 32 форумах у него доступа нет, и вот не знаю как мне сделать так чтобы не терять  получаемый результат, но и от filesort избавится =\\ Иль я туплю или не вижу очевидного, уж извините.

ADD: мне почему то как и в случае с правильным выводом прикрепленных тем, видится вариант только разбивать сие на 2 запроса или JOIN только есть ли толк?

ADD OFF: ещё запутался что за индекс нужен сюда... "
SELECT `name` , `fid` FROM `forum` WHERE `gid` =1 OR (`private` =1 AND fid` IN ( 5, 7 ))
". Никакие ключи мои не жуёт, EXPLAIN:
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     forum     ALL     gid,gid_fid,gid_cat,gid_lenta     NULL     NULL     NULL     43     Using where
Индекс gid_lenta (для этого запроса только), таков был (ну и ещё куча вариантов их не прихожу): KEY `gid_lenta` (`gid`,`private`, `fid`)

ADD ЗЫ почему такая скудная литература по формированию индексов в MySQL =\ Из-за этого, что нет четкого "документа" куда можно было бы обратится, я постоянно путаюсь.

Отредактированно Proger (15.04.2009 04:55:08)

Неактивен

 

#13 15.04.2009 05:00:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Проблема действительно в скобках, и сходу она, видимо, не решается.
Попробуйте и правда через самообъединение

SELECT t1.*
FROM topic t1
JOIN topic t2 USING (id)
WHERE (t1. ... = ... )
ORDER BY t2.last_post_time DESC

Не уверен, что получится, но других мыслей пока нет. Если сработает — будет
правильная сортировка, а в сочетании с LIMIT (он же будет?), будет не страшен и
«using where».

Неактивен

 

#14 15.04.2009 05:27:42

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Получилось сделать что-то вроде:

SELECT t1.*
FROM topic t1
JOIN topic t2 USING (id) //усинг ИД это к индексу относится? И где всовывать условие private = 0?
WHERE t2.private = 1 AND t2.fid IN (5, 7)
ORDER BY t2.last_post_time, t2.pinned DESC

Но я не смог запрос по сие модели довести до ума так, чтобы результат был аналогичный с моим "скобочным" запросом...

Неактивен

 

#15 15.04.2009 22:07:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Нет, я, видимо, плохо объяснил. Хотелось сделать разделение условий ограничения и
условий сортировки. Так, чтобы какие бы ни были скобки, сортировка шла по ключу.
Т.е. ORDER (t2), но WHERE (t1). И условие связи «строки совпадают» (да, по ключу id).

Я имею в виду, что пробовать хочется с
WHERE t1.private = 1 AND t1.fid IN (5, 7)

На тех данных, что Вы дали, читерство не проходит. Но, возможно, на табличках с реальными
данными будет по другому. Если не получится — надо будет часть  вещей переносить
в логику приложения sad

UPD: Также я бы поиграл на реальных данных с лимитами и STRAIGHT_JOIN, оно, скорее всего,
все и решит.

Код:

[celestia] root test > EXPLAIN SELECT STRAIGHT_JOIN t1.* 
    -> FROM topic t2 JOIN topic t1 FORCE INDEX (primary) USING (id) 
    -> WHERE t1.fid IN (5, 7) 
    -> ORDER BY t2.last_post_time DESC;
+----+-------------+-------+--------+---------------+----------------+---------+------------+------+-------------+
| id | select_type | table | type   | possible_keys | key            | key_len | ref        | rows | Extra       |
+----+-------------+-------+--------+---------------+----------------+---------+------------+------+-------------+
|  1 | SIMPLE      | t2    | index  | PRIMARY       | last_post_time | 8       | NULL       |    5 | Using index | 
|  1 | SIMPLE      | t1    | eq_ref | PRIMARY       | PRIMARY        | 4       | test.t2.id |    1 | Using where | 
+----+-------------+-------+--------+---------------+----------------+---------+------------+------+-------------+
2 rows in set (0.00 sec)

Неактивен

 

#16 15.04.2009 23:36:15

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Данные данные мной реальные, разве что ники подменены ну и обрублены посты ибо длинные чота все попались просто по запросу ORDER BY RAND() из действующего проекта.

Лимит обычно 25, в максимальном значении 100.

Чтож будем пробывать, но не сегодня, запарился с JS и загрузкой проца на 100% =\ Спасибо.

Неактивен

 

#17 15.04.2009 23:50:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Думаю, что у Вас больше, чем пять строк wink

Неактивен

 

#18 15.04.2009 23:53:25

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

дать больше может? мне не жалко просто попросили десяток, ну я выдал по быстрому smile только куда нить не в открытый уж источник smile

Неактивен

 

#19 15.04.2009 23:55:14

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Попробуйте самостоятельно сначала wink

Неактивен

 

#20 16.04.2009 00:01:00

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

ммм... тупанул написав первый раз, вот что получил в результате:

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     t2     index     PRIMARY     last_post_time     8     NULL     95181     Using index
1     SIMPLE     t1     eq_ref     PRIMARY     PRIMARY     4     forum.t2.id     1     Using where

работает вроде быстро smile

Отредактированно Proger (16.04.2009 00:04:30)

Неактивен

 

#21 16.04.2009 00:25:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Угу, с лимитом должно работать быстро. Но в случае выборки не в начале (например, 50 страница),
запрос будет тяжелым. К счастью, 50 страницу редко запрашивают (и очень часто ограничивают
возможность выбирать по такой «ленте» разумным количеством страниц).

Неактивен

 

#22 16.04.2009 00:32:23

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Вот только проблемы с восстановлением возвращения нужного результата пока, но вроде потихоньку продвигаюсь... вообще запрос выполняется 0.004, после первого раза, потом уже 0.001, правда один раз скакнул на 0.1. но эт глюк наверное был smile

ЗЫ листать у меня запрещено, просто на одной странице выводятся последние темы + они же в виде рсс с тем же ограничением.

Спасибо большое, очень помогли, а то чуть голову не сломал думая что же делать и думал что совсем кривая логика приложения, писали по пьяне и т.п. smile)

Неактивен

 

#23 16.04.2009 21:28:43

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

мммм... запрос так работает нормально, но как добавляю ORDER BY t1.notpinned все слетает по filesort sad(

SELECT STRAIGHT_JOIN t1 . *
FROM topic t2
JOIN topic t1
FORCE INDEX (
PRIMARY )
USING ( id )
WHERE (
t1.private =0
OR (
t1.fid
IN ( 5, 7 )
AND t1.private =1
)
)
ORDER BY t2.last_post_time DESC
LIMIT 0 , 25


Таблица теперь такова (после изменений)


CREATE TABLE `topic` (
  `gid` int(8) NOT NULL,
  `id` int(8) NOT NULL auto_increment,
  `fid` int(8) NOT NULL,
  `aid` int(8) NOT NULL,
  `aname` varchar(50) NOT NULL,
  `name` varchar(200) NOT NULL,
  `text` text NOT NULL,
  `date` datetime NOT NULL,
  `editdate` datetime NOT NULL,
  `last_post_time` datetime NOT NULL,
  `last_poster_id` int(8) NOT NULL,
  `last_poster_name` varchar(25) NOT NULL,
  `last_post_id` int(8) NOT NULL,
  `posts` int(8) NOT NULL,
  `views` int(8) NOT NULL,
  `notpinned` tinyint(1) NOT NULL,
  `closed` tinyint(1) NOT NULL,
  `erased` tinyint(1) NOT NULL,
  `private` tinyint(1) NOT NULL,
  `first_post_pinned` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `last_post_time` (`last_post_time`)
) ENGINE=InnoDB  DEFAULT CHARSET=cp1251


ЗЫ когда ставил ORDER BY notpinned в индекс с last_post_time добавлял notpinned.
ЗЫ ЗЫ просто до нужного результата осталось только сортировку по notpinned замутить =\

Отредактированно Proger (17.04.2009 00:57:01)

Неактивен

 

#24 16.04.2009 21:35:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Двойная сортировка и filesort =(

Замутите! wink

«FORCE INDEX» Вам поможет smile Пример использования — написан Вами выше для таблички
t1, нужно то же сделать для t2.

Неактивен

 

#25 16.04.2009 21:42:34

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Двойная сортировка и filesort =(

Замутить - замутил.
Всё сделал. Форсе индекс поставил. EXPLAIN говорит индекс взят... все равно Using index, Using filesort на первом запросе...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson