반응형

옵티마이저의 SQL 실행계획을 확인하려면 우선 PLAN_TABLE을 생성해야 합니다. 생성 스크립트는 다음과 같습니다.
-- '?' 는 %ORACLE_HOME 디랙터리를 의미합니다.
@?/rdbms/admin/utlxplan.sql
10G 버전 이상부터는 기본적으로 DBMS가 PLAN_TABLE을 만들고 'PLAB_TABLE' 로 명명한 PUBLIC SYNONYM까지 생성하므로 사용자가 별도로 plan_table을 생성할 필요가 없습니다.
SELECT OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME
FROM ALL_SYNONYMS
WHERE SYNONYMS_NAME = 'PLAB_TABLE';
SQL*PLUS에서 실행계획 확인하기
PLAN_TABLE이 존재하면 여기에 실행계획을 생성해야합니다. EXPLAIN PLAN FOR 명령어를 사용합니다.
EXPLAIN PLAN FOR
SELECT * FROM EMP WHERE EMPNO = 7900;
PLAN_TABLE에 저장된 실행계획을 확인하려면, 오라클이 제공하는 utlpls.sql 스크립트를 이용해야합니다.
SET LINESIZE 200
@?/RDBMS/ADMIN/UTLXPLS
PLAN_TABLE에 저장된 실행계획은 예상 실행계획으로 실제로 다른방식으로 실행될 수도 있습니다.
상용 쿼리 툴에서 실행계획 확인하기
TOAD, ORANGE 같은 상용 쿼리 툴에 실행계획을 확인하기위해서는 SQL을 선택한 상태에서 CTRL + E 를 입력하면 하단에 실행계획이 출력됩니다.
상세한 실행계획 확인하기
EXPLAIN PLAN FOR 명령어와 함께 쿼리를 수행한 후 아래 쿼리를 수행하면 더 상세한 실행계획에 대한 정보를 확인할 수 있습니다.
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL,NULL,'ADVANCED'));
DBMS_XPLAN.DISPLAY 함수의 세번째 인자에는 다음과 같은 옵션을 사용할 수 있습니다.
- serial
- parallel
- outline
- alias
- projection
- all
반응형