본문 바로가기

프로그래밍/oracle

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

반응형

[Hint]조인 방법 변경(LEADING)


LEADING 힌트는 두 테이블 조인 시 드라이빙 테이블을 인자로 사용하며 ORDERED와 같이 FROM절 뒤에 오는 테이블의 위치가 중요 합니다. 


참고로 ORDERED 힌트는 주로 USE_NL/USE_MERGE/USE_HASH 힌트와 같이 사용되는데 USE_NL/USE_MERGE/USE_HASH 인자로 사용되는 테이블은 FROM절에서 두 번째로 나타나는 테이블 이어야 하며 FROM절에서 처음 나타나는 테이블이 드라이빙 테이블(OUTER/DRIVING TABLE)이 되고 나중에 나타나는 테이블이 PROBED TABLE(INNER TABLE)이 됩니다.


[9i]

SQL>SELECT /*+ LEADING(E) USE_NL(D) */ E.ENAME, D.DNAME

     FROM EMP E, DEPT D

     WHERE E.DEPTNO = D.DEPTNO;


Execution Plan

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

SELECT STATEMENT Optimizer=CHOOSE

TABLE ACCESS (BY INDEX ROWID) OF ‘DEPT’

  NESTED LOOP

    TABLE ACCESS (FULL) OF ‘EMP’

    INDEX (RANGE SCAN) OF ‘idx_dept_deptno’



위 힌트는 ORDERED를 이용하면 다음과 같이 바꿀 수 있습니다.


SELECT /*+ ORDERED USE_NL(D) */ E.ENAME, D.DNAME

     FROM EMP E, DEPT D

     WHERE E.DEPTNO = D.DEPTNO;

 

 

 

 


반응형