为什么使用键查找而不是rid查找,因为rid查找更快?

问题描述 投票:0回答:1

没有人知道为什么要使用键查找而不是RID查找来搜索数据,因为当在聚集索引上有非聚集索引时,RID查找肯定比键查找快?就像您已经可以获取RID /地址一样,为什么还要遍历多个级别从根节点读取内容,以获得所需的信息?

sql sql-server lookup
1个回答
0
投票

数据存储在称为扩展区的8K页中。如果表没有聚簇索引,则称为堆,最后一个字节是2字节地址的向量,指向该页面上的数据行地址。这些称为RID或行ID。

[当堆获得聚簇索引(永远只有一个)时,RID地址的向量将转换为关键地址的向量。这允许SQL Server对堆表和群集(索引)表使用相同的页面结构。

因此,您的问题的答案是,群集表丢失了其RID,唯一的策略是使用键查找。请注意,即使将RID放在堆上也需要扫描IAM页面以获取数据页面地址,因此任何“节省”都值得怀疑。

© www.soinside.com 2019 - 2024. All rights reserved.