1. 외부 조인
-
참조하려는 대상이 참조 테이블에 반드시 있음을 예상하지 못 할 때 사용하는 조인 방법임
-
(표현식1) [ LEFT | RIGHT | FULL ] OUTER JOIN 표현
-
(표현식2) 참조하는 테이블 (+) = 참조되는 테이블
-
(표현식3) 스칼라 서브쿼리식 표현
2. 표현 방법 (총 3가지 표현)
//(+)식 표현
SELECT a.id, a.name, b.location
FROM A a, B b
WHERE a.id (+)= b.id;
//OUTER JOIN 표현
SELECT a.id, a.name, b.location
FROM A a LEFT OUTER JOIN B b ON a.id = b.id;
//스칼 서브 쿼리식 표현
SELECT a.id, a.name, (SELECT location FROM B
WHERE id = a.id)
FROM A a;
3. 실행 계획 상세
(1) + 식 표현
(2) OUTER JOIN 식 표현
(3) 서브쿼리 식 표현
4. 그런데,
위에 tb_emp, tb_dept의 조인 컬럼 deptino에 대하여 index가 걸려있음에도 불구하고
모조리 Full Table Access 일어난 것을 보아서, 교재에서 소개된 조인조건 PushDown이 일어나지 않은 것으로 보임.
/*+ no_merge(x) push_pred(x) */ 힌트를 사용하여 유도함.
4. 참조
(1) 코드 참고
(2) 조건절 푸싱(ref.구루비)
'공부 > SQL' 카테고리의 다른 글
[liveSQL] 윈도우 함수 사용 사례(1) (0) | 2020.03.05 |
---|---|
[liveSQL] 인덱스, 정렬 작업 대체 가능 (0) | 2020.03.03 |
[liveSQL] 조인 - Hash Semi 조인, 조건문에 따른 실행계획 차이 (0) | 2020.02.27 |
[liveSQL] 쿼리 변환, 서브쿼리 Unnesting(2) (0) | 2020.02.27 |
[liveSQL] 쿼리 변환, 서브 쿼리 Unnesting(1) (0) | 2020.02.27 |