2014년 2월 2일 일요일

[오라클힌트교육학원강좌,오라클자바커뮤니티,오라클교육]Optimizer Mode를 변경하는 힌트(FIRST_ROWS) 구로디지털 오엔제이프로그래밍실무교육센터 www.onjprogramming.co.kr

[오라클힌트교육학원강좌,오라클자바커뮤니티,오라클교육]Optimizer Mode를 변경하는 힌트(FIRST_ROWS) 구로디지털 오엔제이프로그래밍실무교육센터 www.onjprogramming.co.kr

 

처음 로우가 가장 짧은 시간에 추출되도록 실행 계획을 수립하는 힌트 입니다. 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 /*+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

댓글 없음:

댓글 쓰기