ОсновыНачальный
LIMIT / OFFSET
LIMIT ограничивает количество возвращаемых строк. OFFSET пропускает первые N строк.
Синтаксис
SELECT ... FROM table ORDER BY col LIMIT n OFFSET m;
Объяснение
LIMIT и OFFSET используются для пагинации результатов.
Важно: OFFSET N заставляет базу прочитать N+LIMIT строк и выбросить первые N. На больших страницах это медленно. Для production-пагинации используй keyset pagination: WHERE id > $last_id ORDER BY id LIMIT n.
Пример
-- Страница 3 (по 20 записей) SELECT * FROM posts ORDER BY created_at DESC LIMIT 20 OFFSET 40; -- Быстрая keyset-пагинация SELECT * FROM posts WHERE id < $last_id ORDER BY id DESC LIMIT 20;
Связанные термины
Анекдоты по теме
— Что такое seq_page_cost и random_page_cost? — Параметры PostgreSQL для оценки стоимости I/O. — По умолчанию random_page_cost = 4.0 (в 4 раза дороже seq). — На SSD? — Лучше поставить 1.1–1.5. Оптимизатор будет чаще использовать индексы. — Это действительно меняет планы? — Значительно.
Разработчик смотрит на EXPLAIN и видит: cost=0.00..99999.00 rows=1000000 — Это нормально? DBA: (смотрит на часы, потом на разработчика) — Нет.
— Мой EXPLAIN показывает Seq Scan. — Добавь индекс. — Добавил. Всё равно Seq Scan. — Сколько строк в таблице? — 50. — Оптимизатор умнее тебя. При 50 строках индекс медленнее.