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子句,那么我们会期望影响使用哪个索引。

但是在这种情况下,对于表中的每一行检索两列( a2coda ),并以非特定顺序返回行,那么对任一索引进行全面扫描都是合适的计划。

链接地址: http://www.djcxy.com/p/59317.html

上一篇: SQL Server : expected clustered index scan, but got non clustered index scan

下一篇: Why NonClustered index scan faster than Clustered Index scan?