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
댓글 없음:
댓글 쓰기