ここではOracleのEXPLAIN PLAN文を使って実行計画を取得を紹介します。

実行計画の取得

EXPLAIN PLAN文を使用すると、指定したSQL文を実行するためにOracle Databaseが使用する実行計画を取得できます。

  1. PLAN_TABLEがあるか確認します。PLAN_TABLEはEXPLAIN PLAN文の出力を保持するグローバル一時表として自動的に作成されます。
    SELECT * FROM PLAN_TABLE;

  2. PLAN_TABLEが存在して、既にデータがある場合はデータを削除します。
    DELETE FROM PLAN_TABLE;

  3. 実行したいSQL文の先頭に「EXPLAIN PLAN FOR」を付けて実行します。
    EXPLAIN PLAN FOR SELECT * FROM emp;

    ※「A5:SQL Mk-2」で実行した場合、「SQL statement doesn’t return rows」というエラーが表示されますが無視して構いません。

  4. PLAN_TABLEの中身を確認します。
    SELECT * FROM PLAN_TABLE;

    ※PLAN_TABLEのすべての列の説明については、Oracleのデータベース・リファレンスを参照してください。

  5. PLAN_TABLEは列数が多いため以下のSQL文を実行します。
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

以下のように整形された情報が取得できます。

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 | | 2 | 62 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 2 | 62 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------

8行が選択されました。


以上、EXPLAIN PLAN文による実行計画の取得について解説しました。