実行するのに時間がかかりますが、同じテーブルでcount(*)を同じWHERE句が1秒以内に戻ります。非常に遅く実行されている単純な選択クエリですが、同じテーブルの選択は非常に高速です
このクエリは非常に長い時間(1時間+)のために実行します:
SELECT col1
, col2
, col3
FROM Table
WHERE RowInsertDate >= @SomeStartDate
AND RowInsertDate < @SomeEndDate
しかし、このクエリは1秒未満で戻ってくる:
SELECT count(*)
FROM Table
WHERE RowInsertDate >= @SomeStartDate
AND RowInsertDate < @SomeEndDate
テーブル34万行を持って、主キーに使用されるID列と地理的領域(北、南、東、西)の列があります。列 'RowInsertDate'は、行がテーブルに挿入された日付です。上記のクエリの期待される結果は、それぞれ 'no rows'と '0'です。
このテーブルのクラスタ化インデックスは、(ID、geoRegion)ASCです。このテーブルには、RowInsertDate ASCにクラスター化されていないインデックスもあります。
ここからどこに行くのかわかりません。誰もこれに前に遭遇しましたか?
ボリュームのものである可能性があります。返される行の数 – Paparazzi
これは、実行計画があなたと私たちを支援するものです。また、誰かが選択したcol1、col2をあなたが気づいているインデックスに関連付ける方法はありません。私たちはそれが正しいかどうか分かりません。 – Matt
両方のクエリが異なり、異なる実行計画につながります。両方の実行計画を提供できます – TheGameiswar