[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;
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]조인 방법 변경(USE_MERGE) (0) | 2012.08.17 |
---|---|
oracle - [Hint]조인 방법 변경(USE_HASH) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(HASH_SJ) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(HASH_AJ) (0) | 2012.08.17 |
oracle - [Hint]조인 방법 변경(DRIVING_SITE) (0) | 2012.08.17 |