느린 페이지 문제
OFFSET 기반 페이지네이션이 첫 10 페이지엔 OK. 1000 페이지 되면 매 요청에 1만 행 스캔 + 버려달라 DB 에 요청. Latency 가 offset 따라 선형 증가. 결국 유저가 페이지 100 클릭하면 8 초.
Keyset 페이지네이션 — 일정 비용
'페이지 N' 대신 마지막 (sort_value, id) 본 거 기억 + '이거 후 다음 20' 요청. 쿼리가 인덱스 range scan 사용: WHERE (created_at, id) < (last_seen_created_at, last_seen_id) ORDER BY created_at DESC, id DESC LIMIT 20. 페이지 깊이 무관 일정 비용.
Trade-off
Keyset 페이지네이션이 default 로 forward-only — '페이지 50' 점프 없음. 두 커서로 양방향 지원 가능. URL 이 opaque (커서 string, ?page=N 아님). 대부분 'infinite scroll' UI 엔 OK — 페이지 번호가 OFFSET 의 UX 양보, 유저 필요 아님.