私はこのテーブル(TableA)を持っています:
(
[FieldA] [int] NOT NULL,
[FieldB] [int] NOT NULL,
[Value] [float] NULL
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED
(
[FieldA] ASC,
[FieldB] ASC
)
明確なFieldA値はほとんどありません。たとえば、FieldAを{1,2,3,4,5,6}にすることができます。
このクエリによって全表スキャンが発生するのはなぜですか。
SELECT COUNT(*) FROM TableA WHERE FieldB = 1
これはしませんが:
SELECT COUNT(*) FROM TableA WHERE FieldB = 1 where FieldA in (1,2,3,4,5,6)
SQL Serverはこれを最適化できませんか?FieldAがPKであるTableBがあり、TableBとTableAを結合した場合、クエリは2番目のクエリと同様に実行されます。