実行されてからあまり時間がたっていないSQLであれば簡単にアクセスプランが見れる。
DISPLAY_CURSORは、デフォルト動作ではそのセッションの最後のカーソルのアクセスプランを確認することができる。
また、SQL_IDを指定することで任意のSQL文のアクセスプランも簡単に確認することができる。
実行したSQL
select /* hoge */ 1 from dual;
v$sqlからSQLIDを取得
SQL> select sql_id, child_number from v$sql where sql_text like '%hoge%' and sql_text not like '%v$sql%'; SQL_ID CHILD_NUMBER ------------- ------------ 42mk8byafr2yx 0
DISPLAY_CURSORを使ってアクセスプランの表示
SQL> select * from table(DBMS_XPLAN.DISPLAY_CURSOR('42mk8byafr2yx', 0));
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------
SQL_ID 42mk8byafr2yx, child number 0
-------------------------------------
select /* hoge */ 1 from dual
Plan hash value: 1388734953
-----------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 2 (100)| |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------
DISPLAY_CURSORの3番めの引数のformatを指定すると、実行計画の詳細レベルを変更することができる。
詳細は、「PL/SQLパッケージおよびタイプ・リファレンス」を見るとわかる。