При работе с большими таблицами часто не требуется извлекать каждую строку. Иногда нужны только первые несколько записей или необходимо реализовать «пагинацию» (показ результатов на странице 1, странице 2 и т. д.). Для этих задач используются операторы LIMIT и OFFSET.
Оператор LIMIT используется для указания максимального количества строк, которые должен вернуть запрос.
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name
LIMIT count;
count: Максимальное количество возвращаемых строк.Примечание: Настоятельно рекомендуется использовать
LIMITвместе сORDER BY. Без сортировки «первые X строк» могут быть любыми строками, в зависимости от того, как движок базы данных оптимизирует запрос.
Оператор OFFSET указывает базе данных пропустить определенное количество строк перед тем, как начать возвращать результаты.
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name
LIMIT count OFFSET skip;
skip: Количество строк, которые нужно пропустить перед началом возврата данных.Пагинация — это процесс разделения большого набора результатов на отдельные страницы. Это наиболее распространенный вариант использования комбинации LIMIT и OFFSET.
LIMIT 10 OFFSET 0 (Строки 1–10)LIMIT 10 OFFSET 10 (Строки 11–20)LIMIT 10 OFFSET 20 (Строки 21–30)Этот запрос находит 5 самых длинных фильмов в таблице film.
SELECT title, length
FROM film
ORDER BY length DESC
LIMIT 5;
Этот запрос пропускает первых 10 актеров (отсортированных по ID) и возвращает следующие 5.
SELECT actor_id, first_name, last_name
FROM actor
ORDER BY actor_id
LIMIT 5 OFFSET 10;
Ключевые выводы этого урока:
LIMIT ограничивает количество строк в результирующем наборе.OFFSET пропускает указанное количество строк перед возвратом данных.LIMIT и OFFSET — стандартный способ реализации пагинации.ORDER BY с этими операторами для обеспечения предсказуемых результатов. Действительно предсказуемый результат достигается только при сортировке по уникальным значениям (или по комбинации столбцов, задающей уникальный порядок).В следующем уроке мы увидим, как объединить WHERE, ORDER BY и LIMIT для создания мощных и точных запросов.