SQL은 4세대 언어이다.

왜?
DBMS에 명령을 날릴 때도 SQL이라고 하는 구조화된 질의언어를 통해 원하는 결과
집합을 요구할 뿐 그 결과집합을 얻기 위한 처리절차를 개발자가 직접 기술하지는 않기때문.

EMP와DEPT 테이블을 조인하는 아래(그림 4-2) SQL문 하나만 작성하면 결과집합을 얻기 위해 필요한 프로시저는 내부에서 자동으로 생성 되기 때문

그림 같은 과정을 거쳐 옵티마이저 에 의해 생성된 처리절치를 시용자가 확인할
수 있도록 트리 구조로 표현한 것이 실행계획 (Execution Plan)이다.

옵티마이저의 최적화 수행단계를 요약



1. 사용자가 던진 쿼리수행을 위해 후보군이 될만한 실행 계획들을 찾아낸다.
2. 데이터 딕셔너리 (Data Dictionary)에 미리 수집해 놓은(Dynamic Sampling 기술 논외로 함) 
   오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다.
3. 각 실행계획의 비용을 비교해서 최소비용을 갖는 하나를 선택한다.


그걸 어디서 처리하나?

SQL을 파싱하고, 필요하면 최적화를 수행하며, 커서를 열어 SQL을 실행
하면서 블록을 읽고, 읽은 데이터를 정렬해서 클라이언트가 요청한 결과집합을 만들어
네트워크를 통해 전송하는 일련의 작업들을 모두 서버 프로세스가 처리