Cursors beat offsets at scale.
Pagination, Filtering, Sorting: cursors beat offsets at scale
turn boundaries into contracts
Cursor-only loses 'jump to page 10'.
Offset pagination is simple but slow at deep pages and unstable under writes. Cursor pagination uses a stable key and scales to billions of rows.
Offset: SELECT … OFFSET 10000 LIMIT 20 — DB must read 10020 rows.
Cursor: WHERE id > :last LIMIT 20 — index seek, fast.
Total counts are often expensive; consider 'has_more' instead.
Filters/sorts must match indexes or queries get slow at scale.
Browse latest posts; deep pagination is slow.