我有这张表(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 不能优化这个吗?如果我有 TableB,其中 FieldA 是一个 PK,并且我加入了 TableB 和 TableA,则查询将与第二个查询类似地运行。