페이지네이션은 데이터를 조회할 때 한번에 모든 데이터를 조회하는 것이 아니라 일정한 크기의 묶음(페이지)으로 분할해서 조회하는 기법이다.
첫 번째 페이지에서 오프셋만큼 건너뛰고 그 이후의 데이터를 가져오는 방식
select *
from table
order by id
limit 10 offset 20
테이블에서 10번째 row부터 20개의 데이터를 불러오는 쿼리이다.
이전에 조회한 마지막 데이터를 기준으로 다음 데이터를 가져오는 방식
SELECT * FROM table
WHERE id > 'cursor' -- 이전 페이지의 마지막 데이터의 id
ORDER BY id
LIMIT 10;
오프셋 기반 페이지네이션이 일반적으로 느린 것은 사실이지만 미리 index가 생성되어있는 경우에는 충분히 빠를 수 있다고 한다.