본문 바로가기

프로그래밍/oracle

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

반응형

실행계획 SQL연산(MERGE SEMI JOIN)


SEMI JOIN은 첫번째 Match되는 value를 찾기만 하면 결과를 돌려주는 join 문입니다.


MERGE SEMI JOIN과 HASH SEMI JOIN으로 나타나는데 EXISTS와 같은 Query에서 서브 쿼리 조건에 대한 인덱스가 존재하지 않으면 비효율적인 실행 계획이 세워지게 되는데 이러한 경우 세미 조인을 적절히 이용하면 됩니다. 


SQL>SELECT ENAME, SAL

     FROM   EMP E

     WHERE  EXISTS ( SELECT /*+ MERGE_SJ */

                                 1

                        FROM  DEPT D

                        WHERE E.DEPTNO = D.DEPTNO);


Execution Plan

--------------------------------------------------------------

0        SELECT STATEMENT Optimizer=CHOOSE 

1        0  SORT (AGGREGATE)

2        1    MERGE JOIN (SEMI)

3        2      SORT (JOIN)

4        3        TABLE ACCESS (FULL) OF ‘EMP’

5        2      SORT (JOIN)

6        5        TABLE ACCESS (FULL) OF ‘DEPT’

7        


 

 

 

 


반응형