Software Engineer and Web Developer's Diary

1年後の自分に向けて

oracle で EXPLAIN PLAN を使う

複雑な仕様の場合、SQL も同じように複雑になってしまうことがよくある。 JavaPHP といった言語なら複雑にならないように部品化したり、コンポーネント化したりするリファクタリングといった手法がある程度確立されてきているが、SQL に関してそういったものはあまり見たことがない。

まぁ、とりあえず複雑になるのは仕方がないとして(そのうち勉強する)、レスポンスや負荷に関しては仕様を満たす範囲で最適化したい。そういった場合に活用するのが 実行計画

実行計画は、1.EXPLAIN PLAN といったコマンドを使って取得する方法と、2.AUTOTRACE を有効にして取得する方法がある。 1.は SQL を実行せずに解析する為、実行計画は取得できるが SQL の統計情報は取得できない。 2.は SQL を実行し解析するので SQL の統計情報も取得できる。

とりあえず1.の方法だけ説明。

EXPLAIN PLAN FOR SELECT * FROM HOGE;
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());

上記 2 行で実行計画が取得できる。 実行計画の読み方についてはまたこんど。

参考 EXPLAIN PLAN - Oralce/オラクルをマスターするための基本と仕組み