본문 바로가기

프로그래밍/oracle

oracle - [Hint]Optimizer Mode를 변경하는 힌트(CHOOSE)

반응형

[Hint]Optimizer Mode를 변경하는 힌트(CHOOSE)
 
 
Optimizer Mode를 변경하는 힌트(CHOOSE)

CHOOSE 힌트인 경우 테이블에 통계 정보가 존재한다면 ALL_ROWS로 동작을 하며 없는 경우엔 RULE-BASED OPTIMIZER로 동작을 하며 CHOOSE, ALL_ROWS는 비용 기반 옵티마이저 환경에서  SQL문의 WHERE 조건을  만족하는 모든 행을 가장 빠르게 검색하는 실행 계획을 결정 합니다.

초기 파일에서 OPTIMIZER_MODE의 default 값은 CHOOSE 입니다.

analyze table emp compute statistics
analyze table dept compute statistics

select /*+ CHOOSE */
       e.empno,
           e.ename,
           d.dname
from   emp e, dept d
where  e.deptno = d.deptno;


Operation        Object Name        Rows        Bytes        Cost       
-----------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=HINT: CHOOSE                14                   4  
  TABLE ACCESS BY INDEX ROWID        SCOTT.EMP        4          40          1          
    NESTED LOOPS                14          294          4                                 
      TABLE ACCESS FULL        SCOTT.DEPT        4          44          3                   
      INDEX RANGE SCAN        SCOTT.IDX_EMP_DEPTNO        5                   0                    
 
 
 
 

반응형