SQL의 실행계획을 수립하고, 실행계획(execute plan)을 생성해내는 것
2. Optimizer 2종류
가. Rule-Based Optimization(RBO) : 규칙기반
- 미리 정해진 규칙에 따라 실행계획 수립
- 융통성이 없음
- 9i에서 기본값으로 사용
나. Cost-Based Optimization(CBO) : 비용기반
- 실행비용의 예측을 통한 지능적인 실행계획 수립, Dictionary 이용
- Dictionary 정보에 따라 지능적인 판단수립
- Dictionary 정보에 크게 의존하므로 Dictionary 관리가 매우중요
3. Optimizer hint
명령문 레벨에서 사용하는 파라미터
가. /*+ ALL_ROWS */ : 전체 처리율의 최적화
나. /*+ FIRST_ROWS[(n)] */ : 처음 결과가 나올 때까지의 시간을 줄이기 위해 최적화
n = 임의의 자연수
4. RBO에서의 Optimizer의 실행계획 조정
가. From 절에서 테이블 순서 변경(가장 오른쪽 있는 테이블 부터 수행한다)
나. Where 절에서 컬럼 순서 변경
다. 인덱스의 생성 및 삭제
라. 기타 문법 트릭의 사용
예) ename에 인덱스가 있지만 optimizer가 사용하지 않게 하기 위해서는
where ename = 'test' -> where substr(ename, 1, 4) = 'test'
로 수정한다.
5. CBO에서의 Optimizer의 실행계획 조정
가. Dictionary 통계를 정기적으로 갱신한다.
나. Hint를 사용하여 쿼리를 작성한다.
다. 파라미터를 설정한다.(OPTIMIZER_MODE, DB_FILE_MULTIBLOCK_READ_COUNT 등)
참고 : Hint의 문법
/*+ 힌트 */
예) update /*+ index(e employees_job_idx) */
employees e
set e.salary =
(select /*+ index(m employees_salary_idx) */
(e.salary + m.salary) /2
from employees m ............
.......