PAGINATION
깊은 페이지는 OFFSET보다 키셋 페이징을 검토한다
OFFSET은 앞의 행을 건너뛰는 비용이 커질 수 있다. 키셋 페이징은 마지막으로 본 키를 기준으로 다음 범위를 찾는다.
OffsetKeysetDeferred
OFFSET
skip
ORDER BY id LIMIT 10 OFFSET 100000
앞 페이지 행을 읽고 버리는 비용이 누적될 수 있다.
Keyset
seek
WHERE id > :last_id ORDER BY id LIMIT 10
인덱스 범위 탐색으로 다음 구간을 찾는다.
Deferred Join
late fetch
SELECT id ... LIMIT/OFFSET JOIN detail by id
PK만 먼저 찾고 상세 컬럼은 나중에 읽는다.
조건: 정렬 키는 안정적이어야 하며, 동률 처리를 위해 id 같은 tie-breaker를 함께 둔다.