【ORACLE】SQLの実行計画の見方


ここではORACLEデータベースで、SQLの実行計画の見方を紹介します。

実行計画を取得する方法は↓で紹介していますので参考にしてください。
>>【ORACLE】SQLの実行計画を取得する方法

SQLの実行計画の見方

実行計画の見方を解説します。

実行計画の見方で押さえておきたいポイントは次の3つです。
 1.実行計画は、インデントがされている
 2.インデントが右に行くほど深いと言い、インデントが深い順に実行されます
 3.深さが同じ場合は、上から順に実行されます
以上の3点です。

例えば、次のようなSQLの場合で確認してみましょう。
table1とtable2を結合しているだけのシンプルなSQLです。

select
    a.col1
    ,b.col2
from
    table1
    inner join table2 on a.col1 = b.col1
;

上記のSQLの実行計画を見てます。

SELECT STATEMENT
 NESTED LOOPS --③
  TABLE ACCESS FULL TABLE1 --①
  TABLE ACCESS FULL TABLE2 --②

・1番目に実行されるのは、インデントが一番深い「TABLE ACCESS FULL TABLE1」です。TABLE1のテーブルをフルスキャンします。

・2番目は「TABLE ACCESS FULL TABLE2」が実行され、TABLE2のテーブルがフルスキャンされます。

・3番目は、2つのテーブルにアクセスした結果をネステッドループで結合していきます。

インデントが深い順に実行されます。インデントが同じ場合は上から順に実行されます。

複雑なSQLであっても実行計画の見方は変わらないので1つ1つ確認していきましょう。

まとめ

実行計画の見方で押さえておきたいポイントは次の3つです。
 1.実行計画は、インデントがされている
 2.インデントが右に行くほど深いと言い、インデントが深い順に実行されます
 3.深さが同じ場合は、上から順に実行されます
以上の3点です。

SQLチューニングの方法については↓で紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ