Подтвердить что ты не робот

Как работает параметр "LIMIT" в sql?

У меня, например, 4000 строк, и я определяю предел X.

Запрос останавливается после того, как он найдет X строк? или запрос находит все строки, а затем берет X строк из найденных строк?

Спасибо.

4b9b3361

Ответ 1

Из Справочное руководство по MySQL:

Если вы используете LIMIT row_count с ORDER BY, MySQL заканчивает сортировку как вскоре, поскольку он нашел первые строки row_count отсортированного результата, а не сортировать весь результат. Если заказ выполняется с помощью index, это очень быстро. Если fileort необходимо сделать, все строки, которые соответствие запросу без предложения LIMIT должно быть выбрано, и большинство или все они должны быть отсортированы, прежде чем можно будет убедиться, что были найдены первые строки row_count. В любом случае, после найдены исходные строки, нет необходимости сортировать оставшиеся набора результатов, и MySQL этого не делает.

Таким образом, возможно, что весь набор результатов известен до применения LIMIT. Но MySQL попробует все, что не может этого сделать. И вы можете помочь ему, предоставив полезные индексы, соответствующие вашим запросам.

EDIT: Кроме того, если набор не отсортирован, он завершает операцию SELECT, как только он передает достаточное количество строк в результирующий набор.

Ответ 2

SELECT * FROM your_table LIMIT 0, 10

Это отобразит первые 10 результатов из базы данных.

SELECT * FROM your_table LIMIT 5, 5

Здесь будут показаны записи 6, 7, 8, 9 и 10

Мне нравится говорить MySql; Я хочу, чтобы вы начали отсчет с 5 + 1 или 6-й записи, но выберите только 5 записей

Ответ 3

Я предполагаю, что вы думаете о MySQL, в котором согласно документации ответ зависит от этого. Если вы используете LIMIT (без HAVING), то:

  • Если вы выбираете только несколько строк с LIMIT, MySQL использует индексы в некоторых случаях, когда обычно он предпочитает выполнять полное сканирование таблицы.
  • Как только MySQL отправляет требуемое количество строк клиенту, он прерывает запрос, если вы не используете SQL_CALC_FOUND_ROWS.

Есть несколько других случаев, о которых вы должны прочитать в документации.

Ответ 4

Он останавливается после того, как он найдет количество строк, указанное в предложении LIMIT. Это можно проверить с большим объемом данных. Он извлекает результат за время, которое невозможно, если после этого он получает все строки таблицы и фильтрует.

Ответ 5

Если вы используете MS SQL Server, вы можете записать его как указано ниже.

Select TOP [x]

*
From MyTable

Надеюсь, что это поможет.

Vamyip