【SQL】テーブルアクセスフルスキャンを無くしてチューニングする方法


ORACLEデータベースのSQLで、SELECT文が遅いときの一番簡単なチューニング方法を紹介します。

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

フルスキャンを無くしてチューニングする方法

SELECT文が遅い原因の多くが対象データの抽出にかかる時間です。

下記のようなSELECT文が遅い場合に、テーブルアクセスフルスキャン(table access full)、つまり全表検索している場合には、抽出条件である「div_cd」にインデックスを作成しましょう。

◆SELECT文の例

select * from table1 a where a.div_cd = '100';

◆インデックスの例

CREATE INDEX table1_idx0 ON test01.table1(div_cd) TABLESPACE index_tbs;

インデックスを作成しても速くならない場合

インデックスを作成しても必ずインデックスが利用されるとは限りません。

そんな場合は、ヒント句を追加して実行計画を固定しましょう。

select /*+INDEX(a table1_idx0)*/ * from table1 a where a.div_cd = '100';

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。