Sql server 为什么叶节点在聚集索引中相互连接?
我们知道,创建聚集索引时,索引键数据存储在B-树结构中是非常重要的。B-树的底层是叶节点,其中包含表的实际数据行,所有叶节点都指向 下一个和上一个叶节点。我想知道使用双链接列表连接叶节点的目的。 如能回答我的问题,我将不胜感激 我想知道使用双链表连接leaf的目的 节点 在执行范围查询时,这是一种有效的方法来获取向前或向后排列的数据 例:Sql server 为什么叶节点在聚集索引中相互连接?,sql-server,Sql Server,我们知道,创建聚集索引时,索引键数据存储在B-树结构中是非常重要的。B-树的底层是叶节点,其中包含表的实际数据行,所有叶节点都指向 下一个和上一个叶节点。我想知道使用双链接列表连接叶节点的目的。 如能回答我的问题,我将不胜感激 我想知道使用双链表连接leaf的目的 节点 在执行范围查询时,这是一种有效的方法来获取向前或向后排列的数据 例: 通过ID上的索引,上述查询可以在20上进行索引查找,并将索引向后扫描到ID=10,返回找到的所有行。是否有任何其他好处来演示mechanism@RebornX
通过ID上的索引,上述查询可以在
20
上进行索引查找,并将索引向后扫描到ID=10
,返回找到的所有行。是否有任何其他好处来演示mechanism@RebornXu:“效率”在这里并没有被低估。这是一个很大的好处,因为如果没有它,SQL Server每次处理一个页面并希望找到下一个页面时都必须重新遍历树。还可以考虑执行一个SELECT TOP(200)
查询,或者一个需要扫描其他非索引字段的查询。@RebornXu我认为这个示例非常概括了它。当然,还有很多其他的查询可以从中受益,但归根结底,它们都可以扫描一系列索引。具有非唯一键的相等是一个,使用合并联接连接两个相当大的表是另一个,因为必须为merge join操作符对输入进行排序。
select ID
from YourTable
where ID between 10 and 20
order by ID desc