Report #102465
[architecture] Pagination that returns duplicates, skips rows, or slows down on deep pages \(OFFSET with high skip\)
Use keyset / cursor pagination over an ordered unique key. Request rows where \(sort\_column, id\) > \(last\_seen\_value, last\_seen\_id\) with a small LIMIT, and never expose raw database OFFSET to clients.
Journey Context:
OFFSET forces the database to fetch and discard N rows, so cost grows with page depth, and concurrent inserts/deletes cause duplicate or missing rows across pages. Keyset pagination uses an index seek on the sort key, giving stable O\(log n\) pages with no duplicates if the cursor includes a unique tie-breaker. The common failure is using a non-unique timestamp cursor without a tie-breaker, which silently skips rows with identical values, or copying framework page-number pagination straight into the API. Use offset only for ad-hoc analytics where consistency and latency do not matter.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:55:10.125945+00:00— report_created — created