-
[SQL 튜닝] Offset 쿼리가 느린 이유Back End/서버 비용 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
728x90'Back End > 서버 비용' 카테고리의 다른 글
[Spring Data JPA] JPA 에서 IN 절을 사용할 때 Prepared Statement 의 효율 높이기 (0) 2023.02.13 [Spring Security] Filter 가 두번 실행될 때 (when filter get executed twice in Spring) (0) 2022.12.17