[Hint]조인 방법 변경(USE_MERGE)
머지 조인(Merge Join)이 일어나도록 유도하는 힌트 구문으로 이 경우 거의 SORT를 동반하므로 SORT MERGE JOIN이라고 부릅니다. 머지 조인이란 양쪽 테이블에서 대상 로우를 추출 후 조인 컬럼을 기준으로 SORT를 한 후 최종 결과를 만들어 내는 조인 방식 입니다.
USE_NL처럼 FROM 절 다음에 위치하는 테이블의 순서는 중요하지 않은데 그 이유는 어차피 독립적으로 정렬된 후 병합이 일어나므로 중요하지 않다고 할 수 있으며 SORT MERGE JOIN에서는 드라이빙 테이블의 의미가 없습니다.
[형식]
/*+ USE_MERGE ( table [table]... ) */
[예]
아래 예제는 Oracle 10g에서 돌렸습니다.
select /*+ ORDERED USE_MERGE(e) */
e.empno,
e.ename,
d.dname,
d.loc
from dept d, emp e
where e.deptno = d.deptno
---------------------------------------------------------------
Operation Object Name Rows Bytes Cost
-------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 14 5
MERGE JOIN 14 406 5
TABLE ACCESS BY INDEX ROWID SCOTT.DEPT 4 72 2
INDEX FULL SCAN SCOTT.PK_DEPT 4 1
SORT JOIN 14 154 3
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 14 154 2
INDEX FULL SCAN SCOTT.IDX_EMP_DEPTNO 13 1
select /*+ USE_MERGE(d e) */
e.empno,
e.ename,
d.dname,
d.loc
from dept d, emp e
where e.deptno = d.deptno
---------------------------------------------------------------------
Operation Object Name Rows Bytes Cost
------------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 14 5
MERGE JOIN 14 406 5
TABLE ACCESS BY INDEX ROWID SCOTT.DEPT 4 72 2
INDEX FULL SCAN SCOTT.PK_DEPT 4 1 SORT JOIN 14 154 3
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 14 154 2
INDEX FULL SCAN SCOTT.IDX_EMP_DEPTNO 13 1
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]조인순서 변경(ORDERED) (0) | 2012.08.17 |
---|---|
oracle - [Hint]조인 방법 변경(USE_NL) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(USE_HASH) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(LEADING) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(HASH_SJ) (0) | 2012.08.17 |