Oracle Tuning 강좌
DBMS_XPLAN.DISPLAY 2 2 99,999+

by 강정식 DBMS_XPLAN.DISPLAY DBMS_XPLAN [2010.05.19]


  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 NameColumn Projection Information이 추가로 제공된다
OUTLINE Typical Format에 추가적으로 Hidden Hint인 Outline Global Hint를 제공한다
ADVANCED ALL FormatOUTLINE 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);
  • - SQLEXPLAIN 되었으면 그 다음에 원하는 포멧으로 출력한다.
  • - 위와 같이 하였으면 기본적으로 '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.
    

- 강좌 URL : http://www.gurubee.net/lecture/2115

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 나그네 [2010.10.29 13:22:24]
강좌 도움을 정말 많이 받고 있습니다.

항상 감사합니다.

위의 설명에서 '테이블을' 이 두번 반복됐네요.

Execution Plan이 저장되는 테이블을 테이블을 지정하며, 기본값은 'PLAN_TABLE' 이다.

by 참된신자 [2014.08.13 11:00:33]

감사합니다 :)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입