LIMIT / OFFSET
LIMIT ограничивает количество возвращаемых строк. OFFSET пропускает первые N строк.
SELECT ... FROM table ORDER BY col LIMIT n OFFSET m;
Объяснение
Пример
-- Страница 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;
Связанные термины
Анекдоты по теме
— Что такое bulk_create в Django? — Создаёт много объектов одним запросом. User.objects.bulk_create([User(name=n) for n in names]) — Вместо loop с .create()? — Да. 1000 объектов: loop = 1000 INSERT, bulk_create = 1 INSERT с 1000 строками. — Насколько быстрее? — В 10–50 раз.
— Оптимизатор может «заглянуть» внутрь CTE? — В PostgreSQL до 12 — нет. CTE был «забором оптимизации». — С PostgreSQL 12+? — По умолчанию может оптимизировать. Если нужно принудительно материализовать — WITH ... AS MATERIALIZED.
— Мой EXPLAIN показывает Seq Scan. — Добавь индекс. — Добавил. Всё равно Seq Scan. — Сколько строк в таблице? — 50. — Оптимизатор умнее тебя. При 50 строках индекс медленнее.