
세분화 과정
1. SQL 파싱
- 파싱트리 생성 :sql 문을 이루는 개별 구성요소를 분석해서 파싱 틍리 생성
- Syntax 체크: 문법적 오류가 없는지 확인, 사용할 수 없는 키워드를 사용했거나 순서가 바르지 않거나 누락된 키워드가 없는지 확인하는 과정.
- Semantic 체크: 의미상 오루가 없는 지 확인 , 존재하지 않는 테이블 도는 컬럼을 사용했는지, 사용한 오브젝트에 대한 권한이 있는지 확인
- SQL 이 Shared Pool에 캐싱되어 있는지 확인
* Shared Pool: SGA 영역내 Libray Cache와 Data Dictionary cache 를 포함하는 영역
2. SQL 최적화
- 옵티마이저가 최적화 단계를 맡는다.
- 옵티마이저가 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행 결로를 생성해서 비교한후 가장 효울적인 하나를 선택한다.
- 데이터베이스 성능을 결정하는 가장 핵심적인 엔진이다.
3.로우 소스 생성
- SQL 옵티마이저가 선택한 실행 경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포매팅 하는 단계이다.


-> index tas_x01= deptno,no
-> index tas_x02 = deptno, job, no

-> Optimizer가 tas_x01 인덱스를 선택하였다. 그 근거는 무엇일까?
* Index tas_x02를 타게 할 경우


Cost : 쿼리를 수행하는 동안 발생할 것으로 I/O 횟수 또는 예상 소요 시간을 표한한 값.
-> Cost 비용이 인덱스 tas_x01이 더 작은 것을 알 수 있다.
옵티마이저가 비용을 계산해서 비용이 적은 index tas_x01을 타게 했다.
항상 옵티마이저가 최선의 선택을 하는 것이 아님을 알아두자!!
=>
다음시간에는 옵티마이저 앞서 사용한 /+ ~/ 옵티마이저 힌트에 대해 알아 보자