При работе с большими таблицами часто не требуется извлекать каждую строку. Иногда нужны только первые несколько записей или необходимо реализовать «пагинацию» (показ результатов на странице 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 для создания мощных и точных запросов.