В некоторых случаях, когда используется LIMIT #
и не используется HAVING
,
MySQL будет выполнять запрос несколько иначе:
Если при помощи
LIMIT
выбираются только несколько строк, MySQL будет использовать индексы в тех некоторых случаях, когда он обычно предпочел бы делать полное сканирование таблицы.Если
LIMIT #
используется сORDER BY
, MySQL закончит сортировку, как только найдет первые#
строк, вместо того, чтобы сортировать всю таблицу.При сочетании
LIMIT #
сDISTINCT
MySQL остановится, как только найдет#
уникальных строк.В некоторых случаях группировка
GROUP BY
может быть выполнена путем упорядоченного считывания ключа (или путем выполнения сортировки по ключу) и последующего вычисления итогового результата пока не изменится значение ключа. В этом случаеLIMIT #
не будет вычислять какие-либо ненужные предложенияGROUP BY
.После того как MySQL пошлет первые
#
строк клиенту, он прервет выполнение запроса (если не используетсяSQL_CALC_FOUND_ROWS
).LIMIT 0
всегда будет быстро возвращать пустую выборку. Эта команда полезна для проверки запроса и получения типов столбцов результата.Если сервер для выполнения запроса использует временные таблицы,
LIMIT #
применяется для вычисления того, сколько для них потребуется места.