DB/SQL

インデックス(索引)が使われないSQLの条件と例

インデックス

SQL文のパフォーマンスで困ったことはありませんか?そもそも、インデックスが効いていない!ってこともあると思います。今回はインデックス(索引)が使われないSQLの条件と例を見ていきましょう。

ペンちゃん
ペンちゃん
今回はインデックスが使われないSQLの条件についてお勉強しましょう!

インデックスが使われないSQLの条件

NULLを検索

検索条件の列にインデックスが張られていても、NULLを検索するために、IS NULLを使うとインデックスは使われません。

一般的なDBMSは索引データの中にNULLが存在しないため、IS NULL を使用するとインデックスが使用されません。

否定構文

検索条件に否定構文(<>, !=, NOT IN)を使うとインデックスが使用されません。

<>

!=

中間一致・後方一致のLIKE検索

LIKE検索でインデックスを使用するのは前方一致のみです。中間一致・後方一致ではインデックスが使用されません。

中間一致

中間一致ではインデックスが使用されません。

後方一致

後方一致でもインデックスが使用されません。

前方一致

前方一致ではインデックスが使用されます。

OR条件

検索にOR条件を使用しているとインデックスが使用されません。

関数

検索に関数を使用しているとインデックスが使用されません。

演算

検索に演算を使用しているとインデックスが使用されません。

|| 演算子

算術演算子

複合インデックスの順番

複合インデックスの場合、インデックスが使用されるためには条件があります。

インデックス作成

インデックスを{col1 ,col2}で作成します。

インデックスを使う例

検索条件が{col1 ,col2},{col1}の場合インデックスを使用します。

インデックスを使わない例

検索条件が{col2}、順番が逆{col2 ,col1}の場合インデックスを使用しません。

まとめ

今回はインデックスが使われないSQLの条件と例を見ていきました。ぜひ参考にしてみてください。

ペンちゃん
ペンちゃん
今回はインデックスが使われないSQLの条件についてお勉強したよ!