sql-server – SQL Server群集索引是否替换了RID查找“索引”

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server群集索引是否替换了RID查找“索引”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server中的表具有聚簇索引时,是否意味着所有索引查询将通过聚簇索引进行?

例如,如果我有一个具有单个非聚集索引的表(索引一列)并通过该列搜索一行,则它将执行Index Seek – > RID – >数据行查找 – >结果

但是,如果我在不同的列上添加聚簇索引,那么相同的查询将执行以下索引搜索 – >提取聚类键 – >聚集索引搜索 – >结果

这对我来说意味着非聚集索引不再在叶子处使用RID,而是使用聚簇索引的聚类密钥“终止”是对的吗?

解决方法

是的,你有很多想法.

当您有聚簇索引时,任何非聚集索引还将包含聚簇索引中的列作为实际数据的“查找”.

如果您搜索非聚集索引中的值,并且您需要访问底层数据的其余列,那么sql Server将从该非聚集索引中进行“书签查找”(或“密钥查找”)到聚集索引(其中包含数据本身,在叶级节点中).使用聚簇索引,您不再需要RID了,因此,如果RID更改(数据从一个页面移动到另一个页面),则不必更新所有索引页面.

书签查找是相当昂贵的操作,因此您可以通过INCLUDE语句向非聚集索引添加其他列.这样,您的非聚集索引将在其叶级页面上包含这些附加列,如果只需要包含在该数据集中的列,则可以从非聚集索引本身满足您的查询(在该集合索引中)情况下,它被称为“覆盖索引”),您可以自己保存一系列书签查找.

原文链接:https://www.f2er.com/mssql/82254.html

猜你在找的MsSQL相关文章