LIMIT과 OFFSET은 성능이 저하될 수 있다 — WHERE으로 페이지네이션을 최적화하라
페이지 정보

영삼이
본문
✅ LIMIT
과 OFFSET
은 성능이 저하될 수 있다 — WHERE
으로 페이지네이션을 최적화하라
OFFSET
이 커지면 느려진다, 커서 기반 페이지네이션을 고려하자
❌ OFFSET
사용 시 성능 저하
SELECT * FROM orders
ORDER BY created_at DESC
LIMIT 10 OFFSET 1000;
-
OFFSET
이 커질수록 데이터를 건너뛰는 데 시간이 걸림 -
불필요하게 많은 데이터를 메모리로 가져오고 버리게 되므로 성능이 저하된다.
-
예를 들어, 페이지가 커질수록 쿼리의 속도가 느려짐.
✅ 커서 기반 페이지네이션 사용
SELECT * FROM orders
WHERE created_at < '2021-12-01'
ORDER BY created_at DESC
LIMIT 10;
-
커서 기반 페이지네이션은 마지막 페이지의
created_at
값을 기준으로 다음 페이지 데이터를 빠르게 찾을 수 있도록 함 -
OFFSET을 사용하지 않고, 데이터를 중복 없이 빠르게 로드할 수 있음
페이지네이션 예시: 커서 사용
-- 1 페이지
SELECT * FROM orders
ORDER BY created_at DESC
LIMIT 10;
-- 2 페이지
SELECT * FROM orders
WHERE created_at < '2021-12-01' -- 1 페이지의 마지막 created_at
ORDER BY created_at DESC
LIMIT 10;
-
각 페이지에서 마지막
created_at
값을 커서로 사용하여 -
불필요한 데이터 스캔을 피할 수 있음
추가 팁
-
**
LIMIT
+OFFSET
**은 작은 데이터셋에서는 유효하지만,
데이터가 많아지면 커서 기반 페이지네이션이 훨씬 더 빠르고 효율적이다. -
WHERE
조건을 추가하여 불필요한 데이터를 줄이는 방법도 성능 최적화에 효과적.
✔️ 큰 데이터셋에서 페이지네이션을 처리할 때는
OFFSET
을 피하고 커서 기반 페이지네이션을 사용하는 것이 성능에 유리하다.
- 이전글IN을 사용한 조건보다 EXISTS가 성능이 좋을 때가 있다 25.03.28
- 다음글LIKE는 성능이 떨어진다 — FULLTEXT 인덱스를 활용하라 25.03.28
댓글목록
등록된 댓글이 없습니다.