SQL

SQL

✅ OFFSET은 페이지가 커질수록 느려진다

페이지 정보

profile_image
영삼이
0건 45회 25-03-28 15:22

본문

OFFSET은 페이지가 커질수록 느려진다

무조건 OFFSET으로 페이지네이션 하면 성능 저하가 발생한다


❌ 기본적인 페이지네이션

SELECT * FROM posts
ORDER BY created_at DESC
LIMIT 10 OFFSET 1000;
  • OFFSET이 클수록 앞의 1000개 row를 스캔하고 버림

  • 실제로 보여주는 건 10개지만 뒤에 있는 데이터에 도달하려면 시간이 오래 걸림


✅ ID 기반 또는 커서 방식으로 대체

SELECT * FROM posts
WHERE id < 5000
ORDER BY id DESC
LIMIT 10;
  • 이전 페이지의 마지막 ID를 기준으로 이어 받음

  • 스캔 범위 최소화 → 빠른 응답 유지


추가 팁

  • OFFSET초기 테스트엔 빠르지만,
    실제 서비스에선 페이지가 쌓일수록 병목 발생

  • keyset pagination 또는 seek 방식이라고도 함


✔️ 대용량 테이블에서 페이지네이션이 필요하다면
OFFSET을 버리고 기준 ID를 기준으로 커서 방식으로 바꿔라.
응답 속도와 스케일이 달라진다.

댓글목록

등록된 댓글이 없습니다.