SQL Server:预计聚簇索引扫描,但获得非聚簇索引扫描
我有这张桌子:
CREATE TABLE Ta
(
coda int NOT NULL PRIMARY KEY,
a2 int UNIQUE
);
和一个SQL select语句:
select *
from Ta
我有一个聚集索引,主键和一个非聚集索引,由唯一约束指定。
执行选择我得到以下执行计划:
但我不知道为什么。
数据应该在叶级别上,因此它应该扫描叶级别,因此它应该执行群集扫描。
编辑:表有10000行,结尾的值从9999到0,而a2的值从0到9999。
非聚集索引是查询的覆盖索引。 也就是说,索引包含满足查询所需的所有列。
执行计划显示SQL Server正在使用非聚集索引。
对于给定的查询,这似乎是一个合理的执行计划。
如果有某个谓词(列上的WHERE
子句条件)或ORDER BY
子句,那么我们会期望影响使用哪个索引。
但是在这种情况下,对于表中的每一行检索两列( a2
和coda
),并以非特定顺序返回行,那么对任一索引进行全面扫描都是合适的计划。
上一篇: SQL Server : expected clustered index scan, but got non clustered index scan
下一篇: Why NonClustered index scan faster than Clustered Index scan?