VW_FOJ 인터널 뷰를 살펴보자.
테스트를 위해 아래와 같이 테이블을 생성하자.
1 2 3 4 5 6 |
-- 1DROP TABLE t1 PURGE;DROP TABLE t2 PURGE;CREATE TABLE t1 (c1 NUMBER);CREATE TABLE t2 (c1 NUMBER); |
아래 쿼리에서 VW_FOJ 인터널 뷰를 확인할 수 있다. FOJ는 Full Outer Join의 약어다. 해당 쿼리 변환은 10.2.0.3 버전에 추가된 것으로 보인다.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-- 2ALTER SESSION SET "_optimizer_native_full_outer_join" = force;SELECT * FROM t1 a FULL OUTER JOIN t2 b ON (b.c1 = a.c1);------------------------------------------| Id | Operation | Name |------------------------------------------| 0 | SELECT STATEMENT | || 1 | VIEW | VW_FOJ_0 ||* 2 | HASH JOIN FULL OUTER| || 3 | TABLE ACCESS FULL | T1 || 4 | TABLE ACCESS FULL | T2 |------------------------------------------ |
NO_NATIVE_FULL_OUTER_JOIN 힌트를 사용하면 OUTER 조인과 ANTI 조인의 결과를 UNION ALL하는 예전의 실행계획으로 수행되는 것을 확인할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
-- 3SELECT /*+ NO_NATIVE_FULL_OUTER_JOIN */ * FROM t1 a FULL OUTER JOIN t2 b ON (b.c1 = a.c1);-------------------------------------| Id | Operation | Name |-------------------------------------| 0 | SELECT STATEMENT | || 1 | VIEW | || 2 | UNION-ALL | ||* 3 | HASH JOIN OUTER | || 4 | TABLE ACCESS FULL| T1 || 5 | TABLE ACCESS FULL| T2 ||* 6 | HASH JOIN ANTI | || 7 | TABLE ACCESS FULL| T2 || 8 | TABLE ACCESS FULL| T1 |------------------------------------- |
- 10.2.0.5 버전부터 풀 아우터 조인이 Native Full Outer Join으로 수행된다. [본문으로]
'Oracle > Internal View' 카테고리의 다른 글
| VW_JF 인터널 뷰 (0) | 2018.03.02 |
|---|---|
| VW_GBC 인터널 뷰, VW_GBF 인터널 뷰 (0) | 2018.03.02 |
| VW_DTP 인터널 뷰 (0) | 2018.03.01 |
| VW_DCL 인터널 뷰 (0) | 2018.01.12 |
| VW_DAG 인터널 뷰 (0) | 2018.01.04 |

