본문 바로가기

프로그래밍/oracle

oracle - 실행계획 SQL연산(MERGE JOIN)

반응형

실행계획 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’



 

 

 

 


반응형