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;
Связанные термины
Анекдоты по теме
— Мой EXPLAIN показывает Seq Scan. — Добавь индекс. — Добавил. Всё равно Seq Scan. — Сколько строк в таблице? — 50. — Оптимизатор умнее тебя. При 50 строках индекс медленнее.
— Зачем нужен EXPLAIN (FORMAT JSON)? — Машиночитаемый формат плана. — Зачем? — Для инструментов: pgMustard, explain.dalibo.com визуализируют JSON план. — Текстовый формат хуже? — Для человека читаем. Для программного анализа — JSON. — explain.dalibo.com? — Вставляешь план — получаешь красивую диаграмму. Незаменимо для сложных запросов.
Junior пишет: WHERE YEAR(created_at) = 2024 AND MONTH(created_at) = 1 Senior переписывает: WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01' — В чём разница? — Первый вариант не использует индекс. Функция от колонки = нет индекса.