VW_FOJ 인터널 뷰를 살펴보자.
테스트를 위해 아래와 같이 테이블을 생성하자.
-- 1 DROP 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
-- 2 ALTER 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하는 예전의 실행계획으로 수행되는 것을 확인할 수 있다.
-- 3 SELECT /*+ 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 |