본문으로 건너뛰기
enable_self_join_elimination

enable_self_join_elimination

버전기본값context타입
18onuserboolean
19onuserboolean

쿼리 트리를 분석해 같은 테이블끼리의 self join을 의미상 동일한 단일 scan으로 치환하는 planner 최적화를 켜고 끈다. 기본값은 on이다.

ORM이 생성한 쿼리나 view를 여러 겹 조합한 쿼리에서는 같은 테이블이 불필요하게 두 번 join되는 경우가 흔하다. 이 최적화가 켜져 있으면 planner가 그런 self join을 찾아 하나의 scan으로 합쳐, 테이블을 두 번 읽고 join하는 비용을 없앤다. 일반(plain) 테이블만 대상으로 한다.

이 치환은 의미가 동일한 경우에만 적용되므로 결과가 달라질 걱정은 없다. 특정 쿼리에서 이 최적화가 관여하는지 확인하고 싶다면 세션에서 잠시 끄고 EXPLAIN 출력을 비교하면 된다.

출처: PostgreSQL 18 문서