enable_nestloop
planner가 nested loop join plan을 사용하는 것을 억제할지 정합니다. 기본값은 on입니다.
nested loop join은 바깥쪽 입력의 row마다 안쪽 입력을 반복 조회하는 가장 기본적인 join 방식입니다. 바깥쪽 row 수가 적고 안쪽에 인덱스가 있으면 매우 빠르지만, row 수 추정이 빗나가 바깥쪽이 예상보다 크면 실행 시간이 폭증하는 대표적인 패턴이기도 합니다. off로 해도 완전히 막을 수는 없습니다. 등호 조건이 없어 다른 join 방법을 쓸 수 없는 경우에는 여전히 nested loop가 쓰이며, planner가 큰 penalty를 더해 가능한 한 피하게 만들 뿐입니다.
노트
운영 노트: 추정이 어긋나 nested loop가 잘못 선택된 쿼리에서 세션 단위로 끄고 EXPLAIN (ANALYZE)를 비교해 봅니다. 다만 근본 해법은 통계 개선(ANALYZE, default_statistics_target) 쪽에서 찾는 것이 맞고, 전역 off는 nested loop가 최선인 쿼리까지 망가뜨립니다.
출처: PostgreSQL 18 문서