如果可用,为什么处理器不使用聚簇索引扫描

时间:2013-09-06 12:26:12

标签: sql sql-server performance indexing

所以我在用户表上有这个结构:

enter image description here

但如果我运行以下代码:

select count(*) 
from WH.dbo.tb_DimUserAccount

似乎适用于非唯一非聚集索引ix_DimUserAccount_UserType

enter image description here

这是索引扫描:

enter image description here

为什么不扫描ix_DimUserAccount_Unique?我应该改变我的代码以某种方式使用不同的索引吗?

1 个答案:

答案 0 :(得分:6)

因为非聚集索引可能比聚簇索引窄,所以扫描比聚簇索引更便宜(读取的页面更少)。

NCI叶子页面只包含索引键和任何包含列的值。聚簇索引叶页需要包含表中所有列的值(或指向值的指针)。

因此聚集索引(假设相等的填充因子)通常比NCI适合每页更少的行(除了NCI包括表中所有列的情况)