본문 바로가기

프로그래밍/oracle

oracle - [Hint]조인 방법 변경(USE_MERGE)

반응형

[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            

 

 

 


반응형