среда, 5 декабря 2012 г.

Mysql: некоторые особенности ORDER BY

Оптимизация ORDER BY — о чем многие забывают

Мы тоже с этим столкнулись. В одной базе один запрос выполнялся 30-50 сек, с join 7 таблиц (такова структура проекта). При этом для одной из таблиц почему-то не использовались индексы, хотя они все были, и выбирало каждый раз все 500к строк, чтобы оставить в итоге 1. Плюс Using temporary; Using filesort

Убрав в конце ORDER BY, запрос стал выполняться порядка 5 секунд, и стали использоваться индексы Using index, но в rows всё-равно указывало все 500к строк.

Перешли на SELECT STRAIGHT_JOIN, сохранив сортировку - время вышло тоже порядка 5с, но при этом снова сортировало всё.

Плюс
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
Как MySQL оптимизирует ORDER BY, LIMIT и DISTINCT

Комментариев нет:

Отправить комментарий