반응형
[Oracle]RULE BASED OPTIMIZER
오라클 공식기반 옵티마이저
5,6버전에서는 rule based optimizer가 기본 옵티마이저로 쓰였는데요
현재는 cost based가 default죠.
공식기반 옵티마이저는 말 그대로 공식대로 동작하는 옵티마이저입니다.
이 15가지 공식중에서 상위에 해당하는 것이 있으면 무조건 그것으로 실행계획을
작성하는 것이 공식기반 옵티마이저입니다.
만약 같은 순위라면 AND는 왼쪽에서부터 오른쪽으로 실행하고
OR는 오른쪽에서부터 왼쪽으로 실행을 원칙으로 합니다.
이외에 더 자세한 설명은
를 참고해주세요
ALTER SESSION SET OPTIMIZER_MODE = RULE;
라는 명령어로 공식기반 옵티마이저를 사용할 수 있습니다.
한가지 예시인데요 AND일때 왼쪽 부분인 JOB을 먼저 사용한것을 알 수 있습니다.
OR라면 오른쪽인 DEPTNO를 먼저 사용했겟죠 ㅎ
참고로 OR는 내부적으로 나눠져서 쿼리가 된다는것고 알고계시기 바랍니다.
만약
SELECT * FROM EMP WHERE JOB = 'CLERK' OR 'DEPTNO = 10;
이 문장을 실행하면 실제로는
SELECT * FROM EMP WHERE 'DEPTNO = 10;
SELECT * FROM EMP WHERE JOB = 'CLERK';
이렇게 따로따로 실행된뒤 결과는 합쳐서 나오는 것입니다.
RULE BASED일때 조인순서는 FROM에서 먼쪽부터(오른쪽에서 왼쪽)(동등할 경우)
아우터일때 데이터가있는쪽먼저 드라이빙됩니다.
반응형
'컴퓨터 > Oracle' 카테고리의 다른 글
[Oracle]Stored outlines (0) | 2014.07.21 |
---|---|
[Oracle]COST BASED OPTIMIZER 오라클 비용기반 옵티마이저 통계정보 (2) | 2014.07.17 |
[Oracle]V$SQLAREA SHARED POOL분석 오라클 공유풀 분석 (0) | 2014.07.17 |
[Oracle]SQL TRACE, TKPROF 성능튜닝 (2) | 2014.07.17 |
[Oracle]EXPLAIN PLAN, AUTOTRACE, statistics(Execution plan 실행계획) (0) | 2014.07.16 |
댓글