Optimizer Mode를 변경하는 힌트(FIRST_ROWS)
처음 로우가 가장 짧은 시간에 추출되도록 실행 계획을 수립하는 힌트 입니다. ALL_ROWS와 비교해 보시기를 바라며 SQL 문장에서 MAX, SUM, COUNT등과 같은 집합 함수를 사용하게 된다면 FIRST_ROWS 힌트는 무시되니 조심하세요~
당연히 FIRST_ROWS 힌트가 제 성능을 발휘하기 위해서는 통계 정보가 생성되어 있어야 합니다.
FIRST_ROWS 힌트는 당연히 하나만 가지고 오면 되니까 Full Table Scan보다는 index scan을 선호할 것이며 Interactive Application인 경우 best response time을 제공할 겁니다. 또한 SORT MERGE JOIN보다는 NESTED LOOP JOIN을 선호합니다.
아래의 예를 참고 하세요~
analyze table scott.emp compute statistics
analyze table scott.dept compute statistics
select /*+FIRST_ROWS */
e.empno,
e.ename,
d.dname
from scott.emp e, scott.dept d
where e.deptno = d.deptno
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
-------------------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=HINT: FIRST_ROWS 14 4
NESTED LOOPS 14 294 4
TABLE ACCESS FULL SCOTT.EMP 14 140 3
TABLE ACCESS BY INDEX ROWID SCOTT.DEPT 1 11 1
INDEX UNIQUE SCAN SCOTT.PK_DEPT 1 0
댓글 없음:
댓글 쓰기