我有这张桌子:
CREATE TABLE Ta
(
coda int NOT NULL PRIMARY KEY,
a2 int UNIQUE
);
和SQL select语句:
select *
from Ta
我有一个聚合索引,主键和非聚集索引,由唯一约束指定。
执行选择我得到以下执行计划:
但我不确定原因。
数据应该在叶级别,因此它应该扫描叶级别,因此它应该进行聚簇扫描。
编辑:该表有10000行,coda的值从9999到0,而a2的值从0到9999。
答案 0 :(得分:2)
非聚集索引是查询的覆盖索引。也就是说,索引包含满足查询所需的所有列。
执行计划显示SQL Server正在使用非聚集索引。
对于给定的查询,它似乎是一个合理的执行计划。
如果列上有一些谓词(WHERE
子句条件)或ORDER BY
子句,那么我们希望影响使用哪个索引。
但是在这种情况下,为表中的每一行检索两列(a2
和coda
),并以未指定的顺序返回行,然后对任一索引进行完整扫描是一个合适的计划