"заказ по" занимает слишком много времени в MySQL - PullRequest
3 голосов
/ 15 июля 2009

"заказ по" в запросе занимает много времени в MySQL. SHOW PROFILES показывает, что время занимает процесс сортировки. Есть ли какие-либо настройки / обходные пути, которые уменьшат время сортировки?

Ответы [ 6 ]

8 голосов
/ 15 июля 2009

Если у вас нет индекса в поле, по которому вы упорядочиваете, добавьте его:

"В некоторых случаях MySQL может использовать индекс для удовлетворения предложения ORDER BY без какой-либо дополнительной сортировки."

Редактировать: (Из раздела об оптимизации ORDER BY в документации MySQL.)

5 голосов
/ 15 июля 2009

Добавление соответствующих индексов для полей, по которым вы упорядочиваете, должно помочь.

1 голос
/ 15 июля 2009
ALTER TABLE `tablename` ADD INDEX `indexname` (`columnname`);

Обычно имя индекса совпадает с именем столбца.

1 голос
/ 15 июля 2009

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

0 голосов
/ 16 июля 2009

Можете ли вы сообщить мне вывод следующих 2 команд: показать создать таблицу tbl_name объясните "ваш запрос выбора"

MySQL не будет использовать индекс, если считает, что нужно проверить почти все строки, если нет индекса покрытия. Поскольку в таблице используется только один индекс, попробуйте упорядочить по столбцу, который является частью этого индекса, если он вообще используется.

0 голосов
/ 15 июля 2009

Причина, по которой запрос выполняется медленно, может быть в том, что таблица не проиндексирована; если это так, создайте подходящий индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...