Outer 조인을 Inner 조인으로 변환
- Outer 조인문을 작성하면서 일부 조건절에 Outer 기호 (+)를 빠드리면 Inner 조인할 때와
같은 결과가 나온다. 이럴 때 옵티마이저는 Outer 조인을 Inner 조인문으로 바꾸는 쿼리
변환을 시행한다.
- 옵티마이저가 굳이 이런 쿼리 변환을 시행하는 이유는 조인 순서를 자유롭게 결정하기
위해서다.
- Outer 조인에서 Inner쪽 테이블에 대한 필터 조건을 아래처럼 where절에 기술한다면
inner 조인할 때와 같은 결과집합을 얻게 된다. 따라서 옵티마이저가 Outer 조인을 아예
Inner 조인으로 변환해 버린다.
- 제대로된 Outer 조인 결과집합을 얻으려면 조건을 on절에 기술해주어야 한다.
(이는 즉 조인 후 filter가 되느냐 조인 되기 전에 filter가 되느냐를 결정한다. )
- ANSI Outer 조인문에서 where 절에 기술한 Inner쪽 필터 조건이 의미 있게 사용되는 경우는
is null 조건을 체크하는 경우뿐이며, 조인에 실패하는 레코드를 찾고자 할 때 흔히 사용되는
SQL이다.
- Outer 쪽 필터조건은 on절에 기술하든 where절에 기술하든 결과집합이나 성능에 하등
차이가 없다.
'ORACLE > SQLP' 카테고리의 다른 글
성능고도화 4-11. 집합 연산을 조인으로 변환 (0) | 2016.12.26 |
---|---|
성능고도화 4-10. 실체화 뷰 쿼리로 작성 (0) | 2016.12.26 |
성능고도화 4-8. 공통 표현식 제거 (0) | 2016.12.26 |
성능고도화 4-7. Or-expansion (0) | 2016.12.26 |
성능고도화 4-6. 조인제거 (0) | 2016.12.26 |