본문 바로가기
컴퓨터/Oracle

[Oracle]RULE BASED OPTIMIZER 오라클 공식기반 옵티마이저

by TEATO 2014. 7. 17.
반응형

[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에서 먼쪽부터(오른쪽에서 왼쪽)(동등할 경우)

아우터일때 데이터가있는쪽먼저 드라이빙됩니다.





반응형

댓글