Backend Matrix: post #2137 — TG.ME

🚀 Почему OFFSET убивает твой бэкенд и чем его заменить

Классическая пагинация LIMIT 20 OFFSET 100000 — это тихий убийца производительности. Чтобы вернуть 20 записей с 100-й страницы, СУБД вынуждена прочитать и отбросить 100 000 предшествующих строк. Чем дальше листает пользователь, тем медленнее отвечает API.

💡 Решение: Keyset (Cursor-based) пагинация

--  Плохо (O(N) по времени):
SELECT id, title FROM posts ORDER BY created_at DESC LIMIT 20 OFFSET 100000;

-- Быстро (O(1) по индексу):
SELECT id, title FROM posts
WHERE id < :last_seen_id
ORDER BY id DESC
LIMIT 20;
July 25, 2026 242 4