AdvancedAdvanced PostgreSQL
Efficient pagination with keyset (cursor-based)
The query
SQL
-- Traditional OFFSET pagination (SLOW for large offsets):
SELECT * FROM orders ORDER BY order_id LIMIT 20 OFFSET 10000; -- slow!
-- Keyset pagination (FAST regardless of page):
-- First page:
SELECT order_id, order_date, total
FROM orders
ORDER BY order_id
LIMIT 20;
-- Next page (using last order_id = 500 from previous page):
SELECT order_id, order_date, total
FROM orders
WHERE order_id > 500 -- last_seen_id
ORDER BY order_id
LIMIT 20;Note
“Keyset pagination uses a WHERE clause instead of OFFSET. O(log n) vs O(n). Essential for production APIs.