<aside> 💡 발생 이슈 order by id -> offset 0 -> limit 10에서 느려지는 경우 발생 전체 결과는 1,2개로 10개보다 작은데도 매우 느려짐 반면에 limit이 11 이상이면 빠름

버전 : postrgresql 14

</aside>

1. 쿼리를 분석하기 위해 실행계획 확인

분석 EXPLAIN (ANALYZE, BUFFERS) SELECT …;

2. 분석 결과

where절 indexing이 들어가지 않고 전체 테이블 full scan함 PostgreSQL optimizer가 limit이 작은 경우에는 full scan 수행

3. 해결책

ANALYZE 테이블명; ANALYZE 실행하면 해당 테이블의 통계 정보가 생성됨(pg_stats에) 통계 정보 있으면 optimizer가 통계 정보를 통해 limit이 작더라도 full scan을 수행하지 않고 where로 필터링 후 수행함

4. 결론