Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么叶节点在聚集索引中相互连接?_Sql Server - Fatal编程技术网

Sql server 为什么叶节点在聚集索引中相互连接?

Sql server 为什么叶节点在聚集索引中相互连接?,sql-server,Sql Server,我们知道,创建聚集索引时,索引键数据存储在B-树结构中是非常重要的。B-树的底层是叶节点,其中包含表的实际数据行,所有叶节点都指向 下一个和上一个叶节点。我想知道使用双链接列表连接叶节点的目的。 如能回答我的问题,我将不胜感激 我想知道使用双链表连接leaf的目的 节点 在执行范围查询时,这是一种有效的方法来获取向前或向后排列的数据 例: 通过ID上的索引,上述查询可以在20上进行索引查找,并将索引向后扫描到ID=10,返回找到的所有行。是否有任何其他好处来演示mechanism@RebornX

我们知道,创建聚集索引时,索引键数据存储在B-树结构中是非常重要的。B-树的底层是叶节点,其中包含表的实际数据行,所有叶节点都指向 下一个和上一个叶节点。我想知道使用双链接列表连接叶节点的目的。 如能回答我的问题,我将不胜感激

我想知道使用双链表连接leaf的目的 节点

在执行范围查询时,这是一种有效的方法来获取向前或向后排列的数据

例:


通过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