为什么在这个 B-Tree 查找中有两个叶节点?

Why are there two leaf nodes in this B-Tree lookup?

在这

图形,我们正在 B 树中查找 employee_id 123 和 subsidary_id 20(来自数据库索引教程)。树上有两个叶节点分支。这纯粹是演示,还是我遗漏了什么,因为我认为唯一需要检查的叶节点是最上面的,因为它有 employee_id max 123 和 subsidary_id 最大 27.

图表本身并没有显示特定搜索的 操作 ,而是显示树的局部部分,因此我不会过多地阅读它具体查询。

你在搜索键 123-20 时完全正确,你永远不需要跟随 link 到第二个叶节点(通过层级 link 来自左边,或上面的顺序 link)。

但是(如果没有看到源代码就很难判断 material),这张图很可能也可以用于其他用途。

它在连续的叶节点之间显示 links 的事实意味着使用索引查找来定位特定条目然后按顺序处理它们将非常容易。

我指的是 "give me every record with an employee ID of 123" 或 "give me all records with an employee ID between 123 and 456" 或 "give me all records in employeeID/subsidiaryID order".

这样的查询

所有这些查询都需要使用分层路径查找特定记录(尽管最后一个可能有更快的路径直接指向第一条记录),然后按照顺序路径查找后续记录。

此外,20 的子公司 ID 均为红色这一事实意味着这将是一个理想的机会来教育 reader employee-subsidiary 索引这一事实不一定是所有查询的最佳查询。换句话说,使用另一个索引(仅包含子公司 ID)的高效查询 "give me all records from subsidiary 20" 会更好。

这是我最好的猜测,值得查看教程以查看该图表是否用于其他用途。


当然,可能是因为整理教程的人懒得创建新图形,所以只使用了来自不同问题或较早版本的图形教程的 :-) 我以前就犯过这个错误。