相关疑难解决方法(0)

为什么NonClustered索引扫描比聚簇索引扫描更快?

据我所知,堆表是没有聚簇索引的表,没有物理顺序.我有一个堆栈表"扫描"有120k行,我使用这个选择:

SELECT id FROM scan
Run Code Online (Sandbox Code Playgroud)

如果我为列"id"创建一个非聚集索引,我会得到223个物理读取.如果我删除非聚集索引并更改表以使"id"成为我的主键(以及我的聚集索引),我将获得515个物理读取.

如果聚集索引表是这样的图片:

在此输入图像描述

为什么Clustered Index Scans像表扫描一样工作?(或者在检索所有行的情况下更糟).为什么它不使用具有较少块的"聚簇索引表"并且已经具有我需要的ID?

sql sql-server indexing full-table-scan sql-execution-plan

3
推荐指数
1
解决办法
4059
查看次数