Я добавил в таблицу индексы, которые используются для поиска результата. Я показываю результаты по ASC или DESC заказу. Так что этот столбец должен иметь индекс или нет? У меня есть еще 2 индекса в этой таблице. Как производительность повлияет на создание или отсутствие индекса для этого столбца?
mysql
performance
index
order-by
Сомнат Мулук
источник
источник
Ответы:
Да, 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 :
Кроме того, ключевое слово DESC не имеет смысла в CREATE INDEX.
источник
CREATE INDEX idx_foo ON foo(bar ASC, pants DESC);
должно сработать.ASC
иDESC
еслиINDEX
имеет ту же смесь.Для всех, кто интересуется ответом, связанным с PostgreSQL, ответ - да, будет использоваться индекс. В соответствии с документацией PostgreSQL планировщик запросов «рассмотрит соответствие спецификации ORDER BY либо путем сканирования доступного индекса, соответствующего спецификации, либо путем сканирования таблицы в физическом порядке и выполнения явной сортировки». Это означает, что если существует индекс, который может использовать планировщик, он сделает это, вернувшись к выполнению сортировки после получения соответствующих строк.
источник