DBMS_XPLAN.DISPLAY
DBMS_XPLAN.DISPLAY는 단일 SQL문에 대해 예측 실행계획을 보여주는 Function 이다.
DBMS_XPLAN.DISPLAY는 실측 정보가 아닌 예측 정보를 제공한다.
Function Parameter
FUNCTION DISPLAY(TABLE_NAME VARCHAR2 DEFAULT 'PLAN_TABLE',
STATEMENT_ID VARCHAR2 DEFAULT NULL,
FORMAT VARCHAR2 DEFAULT 'TYPICAL',
FILTER_PREDS VARCHAR2 DEFAULT NULL)
파라미터 설명
파라미터 | 설명 | |
---|---|---|
TABLE_NAME | Execution Plan이 저장되는 테이블을 지정하며, 기본값은 'PLAN_TABLE' 이다. | |
STATEMENT_ID |
Execution Plan시 SET STATEMENT_ID를 지정한 경우 이를 불러올 수 있다. 값이 NULL일 경우 마지막에 실행된 문장을 불러온다. |
|
FORMAT | BASIC | 가장 기본적인 정보만 보여 준다. |
TYPICAL |
Format의 Default값인 Typical은 SQL 튜닝에 필요한 Normal한 정보를 보여 준다. SQL 튜닝에 가장 유용하게 사용되는 Predicate Information이 제공 된다. |
|
ALL | Typical Format에 Query Block Name과 Column Projection Information이 추가로 제공된다 | |
OUTLINE | Typical Format에 추가적으로 Hidden Hint인 Outline Global Hint를 제공한다 | |
ADVANCED | ALL Format에 OUTLINE Format를 합친 정보를 제공한다 | |
FILTER_PREDS | 저장된 PLAN에서 일부 Row 또는 Row Set을 제한하여 출력할 수 있다. |
사용방법
1. SQL*PLUS open
- - Oracle Client인 SQL*PLUS를 실행한다.
2. EXPLAIN PLAN FOR + SQL;
- - 분석하고자 하는 SQL을 'EXPLAIN PLAN FOR' 다음에 넣고 Enter
3. SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
- - SQL이 EXPLAIN 되었으면 그 다음에 원하는 포멧으로 출력한다.
- - 위와 같이 하였으면 기본적으로 'PLAN_TABLE’과 'TYPICAL' Format으로 출력하겠다는 의미임
간단 예제.
간단한 예제를 한 번 실행해 보자
-- 실행계획 수집
SQL> EXPLAIN PLAN FOR
SELECT *
FROM EMP E
WHERE E.EMPNO = 9999999
AND E.DEPTNO = 10;
-- 실행계획 조회
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------
Plan hash value: 3475272958
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 18 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 18 | 3 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | EMP_U1 | 1 | | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------
1 - filter("E"."DEPTNO"=10)
2 - access("E"."EMPNO"=9999999)
15 rows selected.