実行計画が私が提供するDateTimeパラメータに依存するSQLクエリがあります。SQL Server 2008:実行計画は日付パラメータに依存します
WHERE Date > '2012-02-28' AND Date < '2012-01-01'
何の結果が返されませんので、実行計画だけで、定数の評価になります:私は、私のような条件を持っている場合ことを理解しています。しかし、他のケースでは私には意味をなさない実行計画が異なります。たとえば、条件:
WHERE Date >= '2012-02-01 00:00:00' AND Date <= '2012-02-02 22:00:00'
クエリは、追加したインデックスを使用して最適化されています。しかし、条件を次のように変更した場合:
WHERE Date >= '2012-02-27 00:00:00' AND Date <= '2012-02-27 22:00:00'
インデックスをもう使用しません。
クエリを実行する前に、このテーブルのすべてのインデックスを再構築しました。私はこれで論理を見つけることができません。だから私の質問です:DateTimeパラメータはどのような実行計画にクエリに選択される影響を与えることができますか?
編集:明らかに、理由は、SQL Serverを混乱させるDateのインデックスのみが追加されていたためです。そのインデックスを削除した後、すべてが期待通りに機能しました。しかし、アイデアをありがとう。私はあなたがそれを理解するのに十分な詳細を提供しませんでした。インデックスが多すぎると決して良いことはありません!
アイデアのおかげで(私はフィルタリングされたインデックスが存在することも知らなかった)。索引はフィルター処理されず、表は区画化されません。クエリプランは統計に依存しているようです。 –