はじめに
Oracle Database Express Edition 11g(XE)でSQLの実行計画を取得する方法について、まとめてみました。
新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
posted with amazlet at 13.08.26
小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁
翔泳社
売り上げランキング: 170,135
翔泳社
売り上げランキング: 170,135
事前準備
実行計画を参照するには、PLAN_TABLEというテーブルを事前に作成する必要があります。以下のスクリプトを実行することで、PLAN_TABLEを作成することができます。
conn sys/oracle as sysdba @C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\utlxplan.sql
実行計画を取得したいSQLを解析する
実行計画を取得したいSQLを実行する前に、explain plan forという文を指定します。これにより、SQLの解析が行われます。
explain plan for select * from table01; >解析されました。
解析結果(実行計画)を参照する
解析結果を参照するには、以下のスクリプトを実行します。
@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\utlxplp.sql
スクリプトを実行すると、以下のような結果が得られます。以下の例ではテーブルフルアクセスが行われていることが分かります。
PLAN_TABLE_OUTPUT
- -
Plan hash value: 2567418043
- -
Id Operation Name Rows Bytes Cost (%CPU) Time
- -
0 SELECT STATEMENT 1 15 2 (0) 00:00:01 1 TABLE ACCESS FULL TABLE01 1 15 2 (0) 00:00:01
- -
8行が選択されました。
おわりに
explain plan forでSQLの実行計画を出力すると、どのような検索が行われたかを調べることができます。
テスト段階で性能問題になる前に実装段階からこまめにチェックするようにしていきたいですね。