1

我对执行计划有些陌生。我一直认为聚集索引要快得多,因为实际数据行包含在索引树的叶级中,而非聚集索引仅包含索引列值加上指向剩余行数据位置的指针。因此,非集群的 IO 比集群的多。

为了测试这一点,我使用了一个 1,000,000 记录表,以EmployeeID(第一列)作为主键,然后还在同一字段上添加了一个非聚集索引。然后,我使用查询提示来比较正在使用的每个索引的结果。

Select EmployeeID from Employees with(index(PK_EmployeeID))
go

select EmloyeeID from Employees with(index(IX_EmployeeID))
go

结果表明,集群比非集群有更多的 IO 和查询成本(相对于批处理)。有人可以解释一下吗?

4

1 回答 1

4

对于您的测试查询,索引是“覆盖”索引,因为它已经包含结果集所需的所有列。因此,不需要对实际表进行额外读取。并且因为索引更小(更少的页面),访问速度更快。
聚集索引实际上是表本身,按索引排序。因为它包含更多的列,所以需要更多的页面读取。

于 2013-10-09T17:45:25.413 回答