この記事では直前に実行した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());