株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB ベストプラクティス

EXPLAIN PLANによる実行計画取得の問題点

01.確認方法

EXPLAN PLANはSQLコマンド文字列を指定するだけで実行計画を取得できるため、非常に簡単で便利な実行計画の確認方法です。

SQL> explain plan for select * from emp;

解析されました。

SQL> select * from table(DBMS_XPLAN.DISPLAY);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 532 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 14 | 532 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------

8行が選択されました。

しかし、状況によってはEXPLAN PLANの使用が不適切である場合もあるため、注意が必要です。
Oracle Databaseはオプティマイザ統計をはじめとするさまざまな情報をもとに実行計画を作成します。クライアントの実行環境や、プログラミングインタフェース特有の処理にも依存します。
EXPLAIN PLANは一般にSQL*PlusやSQL Developerなどの管理ツール、開発ツールから実行します。
一方で、アプリケーションはJDBCを使用したJavaや、ODP.netを用いた.net環境で実行されます。
これらのクライアント環境の違いのため、EXPLAIN PLANで確認した実行計画と、アプリケーションよりSQLを実行したときの実行計画が異なる場合があります。
このため、実行計画を厳密に取得したい場合は、DBMS_XPLAN.DISPLAY_CURSOR プロシージャまたはSQLトレースの使用をお勧めします。DBMS_XPLAN.DISPLAY_CURSOR プロシージャについては以下をご覧ください。

なお、厳密さは特に要求せず、参考程度に実行計画を確認したい場合であれば、EXPLAIN PLANは非常に有用です。状況に応じて使い分けることが適切です。