質問: index range scan とは? oracleのindex range scanについての質問です。 私の理解のレベルでは、index range scanは範囲検索をする時に発生し、 それ自体は効率的にインデックスを利用している状態である、と理解しています。 もっといえば、betweenを使用したり演算子に「>=」などの不等号を使用した とき以外には発生しないはずと思っていました。 しかし先日、条件部分に「=」等号しかないsqlにてindex range scanが発生しました。 index skip scan ならまだ話はわかるのですが、間違いなくindex range scanでした。 範囲検索で無い場合にindex range scanになる意味がよくわかりません。 ■以下質問です。 範囲検索の場合にindex range scanになるという私の認識はあっているか。 どのような場合に、等価条件だけの場合にindex range scanになるのか。 等価条件だけなのにindex range scanになる場合、検索の仕組みについて。 ■参考情報として記述しておきます。 バージョンは9iです。 1つのテーブルに対するselect文で where句には4つのカラムが等価条件で指定されています。 これらのカラムは条件・カラムの値ともにnullではありません。 関係あるかわかりませんが、カーディナリティが高いにもかかわらず 適切なインデックスが無いsqlでした。 よろしくお願いします。
回答: 複数列でインデクスが構成されている状態で、先頭の列だけ検索条件を指定した場合とか、いろいろあると思いますよ。 インデクス定義や検索条件を具体的に示してもらえれば、もう少し具体的なアドバイスができると思います。