SQL Server:预期的聚簇索引扫描,但得到非聚集索引扫描

时间:2018-01-02 19:45:40

标签: sql-server indexing

我有这张桌子:

CREATE TABLE Ta
(
    coda int NOT NULL PRIMARY KEY,
    a2 int UNIQUE   
);

和SQL select语句:

select *
from Ta

我有一个聚合索引,主键和非聚集索引,由唯一约束指定。

执行选择我得到以下执行计划:

enter image description here

但我不确定原因。

数据应该在叶级别,因此它应该扫描叶级别,因此它应该进行聚簇扫描。

编辑:该表有10000行,coda的值从9999到0,而a2的值从0到9999。

enter image description here

1 个答案:

答案 0 :(得分:2)

非聚集索引是查询的覆盖索引。也就是说,索引包含满足查询所需的所有列。

执行计划显示SQL Server正在使用非聚集索引。

对于给定的查询,它似乎是一个合理的执行计划。

如果列上有一些谓词(WHERE子句条件)或ORDER BY子句,那么我们希望影响使用哪个索引。

但是在这种情况下,为表中的每一行检索两列(a2coda),并以未指定的顺序返回行,然后对任一索引进行完整扫描是一个合适的计划