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를 함께 둔다.