옵티마이져를 이해하기 위해서는
실행계획(EXPLAIN PLAN)을 반드시 분석해보는 것이 좋다.
1, TOAD에서 간단히 실행계획을 보기위해서 다음 테이블을 생성한다.
CREATE TABLE PLAN_TABLE
(
STATEMENT_ID VARCHAR2(30) , -- 사용자가 지정한 제목
TIMESTAMP DATE , -- 실행계획이 수립된 날짜와 시간
REMARKS VARCHAR2(80) , -- 사용자가 부여한 주석(COMMENTS)
OPERATION VARCHAR2(30) , -- AND-EQUAL,INDEX, SORT 등과 같은 실행 연산자
OPTIONS VARCHAR2(30) , -- BY ROWID, JOIN, FULL 등과 같은 실행 옵션
OBJECT_NODE VARCHAR2(128), -- 사용한 데이타베이스 링크
OBJECT_OWNER VARCHAR2(30) , -- 객체를 생성한 소유자
OBJECT_NAME VARCHAR2(30) , -- 테이블, 인덱스, 클러스터 등의 객체의 이름
OBJECT_INSTANCE NUMERIC , -- SQL문의 FROM절에 기술된 객체를 좌에서 우로 부여한 번호
OBJECT_TYPE VARCHAR2(30) , -- UNIQUE, NON-UNIQUE INDEX 등의 객체의 종류
OPTIMIZER VARCHAR2(255), -- CHOOSE, FIRST_ROW 등의 현재의 옵티마이져 모드
SEARCH_COLUMNS NUMERIC , -- 현재 사용하지 않음
ID NUMERIC , -- 수립된 각 실행단계에 붙여진 일련번호
PARENT_ID NUMERIC , -- 부모단계의 일련번호
POSITION NUMERIC , -- 부모 ID를 가지고 있는 자식 ID간의 처리순
COST NUMERIC ,
CARDINALITY NUMERIC ,
BYTES NUMERIC ,
OTHER_TAG VARCHAR2(255),
OTHER LONG -- 다른 필요한 텍스트를 저장하기 위한 필드
);
☞ PLAN_TABLE 생성 스크립트는 $ORACLE_HOME/rdbms/admin/utlxplan.sql과 같다
2. TOAD의 메뉴에서 VIEW->OPTION->ORACLE->EXPLAIN PLAN TABLE NAME 란에 위에서 생성한 테이블명
('PLAN_TABLE')과사용할 오라클 USERID를 적는다.
3. 실행계획을 보고 싶은 쿼리문을 실행한후 VIEW->EXPLAIN PLAN