実行されてからあまり時間がたっていない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パッケージおよびタイプ・リファレンス」を見るとわかる。