반응형
실행계획 SQL연산(MERGE JOIN)
Merge Join은 조인 시 각 테이블을 따로 정렬 후 그 결과를 병합(Merge)하는 집합 연산 입니다. 배치성 JOB에는 효율적이나 OLTP성 업무에는 비효율적일 수 있습니다. 집합연산이므로 모든 ROW를 FETCH한 후 처리할 때 까지는 결과를 확인할 수 없기 때문입니다.
보통 조인 컬럼에 인덱스가 존재하지 않을 때 나타나며 NESTED LOOP JOIN , HASH JOIN과 달리 실행 계획상에 나타나는 테이블의 순서는 중요하지 않습니다.
아래의 SQL문장을 보도록 하죠…
SQL>SELECT E.ENAME, D.DNAME
FROM EMP E, DEPT D
WHERE D.DEPTNO+1 = E.DEPTNO+1;
Execution Plan
------------------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 MERGE JOIN
2 1 SORT(JOIN)
3 2 TABLE ACCESS (FULL) OF ‘DEPT’
4 1 SORT(JOIN)
5 2 TABLE ACCESS (FULL) OF ‘EMP’
반응형
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - 실행계획 SQL연산(NESTED LOOP) (0) | 2012.08.17 |
---|---|
oracle - 실행계획 SQL연산(MERGE SEMI JOIN) (0) | 2012.08.17 |
oracle - 실행계획 SQL연산(MERGE ANTI-JOIN) (0) | 2012.08.17 |
oracle - 실행계획 SQL연산(INLIST ITERATOR) (0) | 2012.08.17 |
oracle - 실행계획 SQL연산(INDEX RANGE SCAN DESCENDING, INDEX UNIQUE SCAN) (0) | 2012.08.17 |