Да, MySQL может использовать индекс по столбцам в ORDER BY (при определенных условиях). Однако MySQL не может использовать индекс для смешанного ASC, порядок DESC ( SELECT * FROM foo ORDER BY bar ASC, pants DESC
). Совместное использование вашего запроса и оператора CREATE TABLE поможет нам более конкретно ответить на ваш вопрос.
Советы по оптимизации предложений ORDER BY:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html.
Изменить 2012-01-21 8:53
Были вопросы об источнике моего заявления об использовании индекса со смешанным ASC / DESC в ORDER BY. Из документации по заказу BY :
В некоторых случаях MySQL не может использовать индексы для разрешения ORDER BY, хотя он все еще использует индексы для поиска строк, которые соответствуют предложению WHERE. Эти случаи включают в себя следующее:
...
Вы смешиваете ASC и DESC:
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
...
Кроме того, ключевое слово DESC не имеет смысла в CREATE INDEX.
Спецификация index_col_name может заканчиваться ASC или DESC. Эти ключевые слова разрешены для будущих расширений для указания хранения значений индекса по возрастанию или по убыванию. В настоящее время они анализируются, но игнорируются; Значения индекса всегда хранятся в порядке возрастания.