Тормозит ORDER BY

Royal Flash

-=MaestrO=-
Тормозит ORDER BY

Вот такая ситуация: пока база была не большая, все работало быстро. Когда база разрослась до 200 Mb, запрос, в котором идет ORDER BY (дата, datetime индексированый столбец) начал заметно торозить, выполняется около 2-ух секунд. Если убрать из запроса ORDER BY - все проходит за 0.1 сек. Есть ли программное решение данной проблемы, чтобы оставть сортировку?
 

Royal Flash

-=MaestrO=-
Структура запроса (в кратце): запрос делает выборку из 5 таблиц:

SELECT список столбцов FROM t1, t2
LEFT JOIN t3 ON (t1.id = t3.id)
LEFT JOIN t4 ON (t1.id = t4.id)
LEFT JOIN t5 ON (t1.id = t5.id)
WHERE условия для t1 с t2
ORDER BY t1.столбец DATETIME DESC
LIMIT 0, 20

Вот если убрать ORDER BY - все ок, с ним - долго.

Все id - PRIMARY KEY
Все остальное, что используется в условии - INDEX

.des.
C explain сейчас буду разбираться - раньше не сталкивался. Может быть подскажете, где почитать про explain, кроме мана по MySQL?
 

.des.

Поставил пиво кому надо ;-)
Ничего кроме мана не нужно
http://dev.mysql.com/explain

EXPLAIN запрос;

условия для объединения t1 и t2 для наглядности перенесите в FROM t1 INNER JOIN t2 ON ... условия для t1 и t2 ...


Кроме структуры запроса, нужна еще и структура таблиц.
Какие индексы в t1?
 

Royal Flash

-=MaestrO=-
В t1, пока что проиндексировано все, что используется в условиях...

Убрал индексы со столбцов, в уоторых много повторяющихся значений, и о ЧУДО - все летает... :) Кто бы мог подумать...

Хотя, тот же столбец с датой, на данный момент, на 282000 записей имеет одну и ту же дату... Может быть, для начала снять и с него индекс? Нет ли предельного кол-ва столбцов для индекса, или ...? Сильно ли влияет на производительность хранение в одной таблице полей text и нескольких индексных столбцов (id_1 id_2 и т.д.)?

Вообщем, появилась новая тема для обучения...
 
Сверху