【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チューニング方法まとめ