こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DATE型カラムのインデックスが効かない

Oracle初心者です。

以下のような2種類のSQLをSQLPLUSで実行し、
実行計画を取得しました。
end_timeでfilterをかける際に、"TABLE ACCESS FULL"となっており、貼っているインデックスが使われていないことがわかりました。
#これがSQLの遅い主要因と考えています。。。。勘です。

インデックスが活用されていない原因としてはどのようなものが考えられるのでしょうか。
宜しくお願いいたします。

1)
set autotrace traceonly
select * from t_sample
where end_time >= '2009-08-25'
and end_time <= '2009-11-26'

2)
set autotrace traceonly
select * from t_sample
where end_time >= to_date('2009-08-25', 'yyyy-mm-dd')
and end_time <= to_date('2009-11-26', 'yyyy-mm-dd')

投稿日時 - 2010-03-08 14:16:08

QNo.5734979

困ってます

質問者が選んだベストアンサー

テーブルの中身を知らないので何ともいえませんが
インデックスの基礎知識として選択の結果が15%以下でないと
使用する意味がないとされています。

ということで単純にSQLを実行した結果の選択行数がおおいから
フルスキャンの方が早いと判断されただけではないでしょうかね?
is nullで索引が効かなくなるといわれているのもこれと同じ理由です。

遅いというのならば索引の付け方が間違えているとかかなぁ?

投稿日時 - 2010-03-08 22:27:00

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

回答(2)

あなたにオススメの質問