옵티마이저란?
sql을 가장 효율적이고 빠르게 수행 할 수 있는 최적의 처리 경로를 선택해주는 오라클 핵심 엔진입니다.
sql이 들어오면 query transformer가 sql을 변경을 합니다.
변경이 필요없으면 안하고 변경이 필요하면 변경을 합니다.
그리고 estimator가 데이터 딕셔너리(user_tables)를 보고 해당 테이블의 통계정보를 이용해서 실행계획을 plan generator에게 만들 수 있도록 합니다.
문제 3. 아래의 sql을 query transformer가 어떻게 변경했는지 확인하시오!
이걸 확인하는 이유는 내가 원하는 실행계획이 안나오는 경우에 확인이 필요합니다.
select ename, sal, job
from emp
where job in ('SALESMAN', 'ANALYST');
답:
explain plan for
select ename, sal, job
from emp
where job in ('SALESMAN', 'ANALYST');
select * from table(dbms_xplan.display);
1 - filter("JOB"='ANALYST' OR "JOB"='SALESMAN')
select ename, sal, job
from emp
where job ='ANLAYST' or job ='SALESMAN';
결과가 달라지지 않으면서 비용이 적게드는 SQL로 변경을 스스로 합니다.
문제 4.
문제4. 아래의 SQL을 어떻게 쿼리 변형을 했는지 확인하시오 !