直前に実行したSQLの実行計画を確認する方法

この記事では直前に実行したSQLの実行計画を確認する方法について解説します。

 実行計画を確認するSQL

直前に実行したSQLの実行計画は、下記のSQLを実行すると取得することができます。

select * from table(DBMS_XPLAN.DISPLAY_CURSOR());

DBMS_XPLAN.DISPLAYの引数にSQL IDを指定するとそのSQL IDのSQLの実行計画を取得することもできます。


 実行例

まずは実行計画を取得したいSQLを実行します。

SQL> select * from emp1 minus select * from emp2;
 EMPNO ENAME  JOB
------ ------ -------
    10 Suzuki Manager
     9 Suzuki Manager

次に実行計画を取得するSQLを実行します。

SQL> select * from table(DBMS_XPLAN.DISPLAY_CURSOR());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------
SQL_ID  dt2h6ssyuyhcw, child number 0
-------------------------------------
select * from emp1 minus select * from emp2

Plan hash value: 1782043266

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |       |       |     8 (100)|          |
|   1 |  MINUS HASH        |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| EMP1 |    10 |   180 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMP2 |     9 |   162 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------

15行が選択されました。

実行計画が取得されました。


 SQLファイル化する

実行計画を取得するSQLをSQLファイルにしておいておくとすぐに実行できて便利です。

SQLファイルは以下のようになります。

set lines 1000
set pages 100
col plan_table_output for a100
select * from table(DBMS_XPLAN.DISPLAY_CURSOR());