페이지네이션

오지석·2024년 5월 23일

페이지네이션

정의

페이지네이션은 데이터를 조회할 때 한번에 모든 데이터를 조회하는 것이 아니라 일정한 크기의 묶음(페이지)으로 분할해서 조회하는 기법이다.

사용하는 이유

  • 성능 향상: 한 번에 모든 데이터를 가져오는 것보다 작은 묶음으로 나눠 가져오면 데이터베이스 부하를 줄이고 응답 시간을 단축시킬 수 있다.
  • 클라이언트 부담 완화: 클라이언트가 한 번에 너무 많은 데이터를 처리해야 하는 부담을 줄여준다.

오프셋 기반 페이지네이션

정의

첫 번째 페이지에서 오프셋만큼 건너뛰고 그 이후의 데이터를 가져오는 방식

장점

  • 구현이 간단

단점

  • 데이터 변경 시 문제 발생 가능
  • 데이터가 많을 때 뒷부분 쿼리 시 속도 저하 (offset이 10만이고 size가 10이면 10만 10개의 데이터를 조회)

예시

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가 생성되어있는 경우에는 충분히 빠를 수 있다고 한다.

0개의 댓글