2013년 8월 13일 화요일

SQL Tuning Oracle Optimizer Mode를 변경하는 힌트(FIRST_ROWS) , 오라클자바커뮤니티

Optimizer Mode를 변경하는 힌트(FIRST_ROWS)

구로디지털 오엔제이프로그래밍실무교육센터

처음 로우가 가장 짧은 시간에 추출되도록 실행 계획을 수립하는 힌트 입니다. ALL_ROWS와 비교해 보시기를 바라며 SQL 문장에서 MAX, SUM, COUNT등과 같은 집합 함수를 사용하게 된다면 FIRST_ROWS 힌트는 무시되니 조심하세요~

당연히 FIRST_ROWS 힌트가 제 성능을 발휘하기 위해서는 통계 정보가 생성되어 있어야 합니다.

FIRST_ROWS 힌트는 당연히 하나만 가지고 오면 되니까 Full Table Scan보다는 index scan을 선호할 SORT MERGE JOIN보다는 NESTED LOOP JOIN을 선호합니다.

아래의 예를 참고 하세요~

analyze table scott.emp compute statistics
analyze table scott.dept compute statistics

select
       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 

댓글 없음:

댓글 쓰기