Back End/서버 비용
[SQL 튜닝] Offset 쿼리가 느린 이유
DevPing9_
2022. 12. 19. 18:58
* 단순 지식 기록용 포스팅입니다.
Off-set 쿼리
SELECT *
FROM items
WHERE 조건문
ORDER BY id DESC
OFFSET 페이지번호
LIMIT 페이지사이즈
Off-set 쿼리가 느린 이유
select .. limit 10000,10020 과 같은 쿼리를 실행하면 10,000부터 20개만 읽는게 아니라,
10,020개를 읽은 후 앞의 10,000개를 버리는 식으로 DB가 동작하기 때문.
왜 그렇게 비효율적으로 동작하게 설계를 했을까 했는데, where 절이 삽입되면 인덱스로 끊어서 offset 위치를 파악할 수 없기 때문.
그래서 데이터수가 많아지고, Offset 의 위치가 커질수록 조회쿼리는 느려짐.
데이터 수가 많아지면 UI 를 바꿔서라도 No Offset 쿼리로 변경하는 것이 좋겠다.
Reference
1. 페이징 성능 개선하기 - No Offset 사용하기
일반적인 웹 서비스에서 페이징은 아주 흔하게 사용되는 기능입니다. 그래서 웹 백엔드 개발자분들은 기본적인 구현 방법을 다들 필수로 익히시는데요. 다만, 그렇게 기초적인 페이징 구현 방
jojoldu.tistory.com
728x90