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

时间:2015-07-29 02:24:10

标签: database indexing tree nodes b-tree

在此

enter image description here

graphic,我们在B-Tree中查找employee_id 123和subsidary_id 20(来自数据库索引的教程)。树上有两个叶子节点分支。这是纯粹的演示,还是我缺少的东西,因为我认为唯一需要检查的叶节点将是最顶层的节点,因为它有employee_id max 123和subsidary_id max 27.。

1 个答案:

答案 0 :(得分:1)

图表本身并未显示该特定搜索的操作,而是显示树的本地化部分,因此我不会读太多进入特定查询。

您在搜索密钥123-20时绝对正确,您永远不需要按照指向第二个叶节点的链接(通过左侧的分层链接或上面的顺序链接) )。

然而(如果没有看到源材料,这很难说),很可能这个图也可以用于其他东西。

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

我的意思是像"这样的查询给我每个记录的员工ID为123"或者#34;给我所有记录的员工ID在123和{{{{}}之间1}}",或者"在employeeID / subsidiaryID订单"中给我所有记录。

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

此外,456的子公司ID都是红色这一事实意味着它将是一个理想的机会,可以教育读者20索引不一定是最好的一个对于所有查询。换句话说,一个有效的查询"给我来自子公司employee-subsidiary"的所有记录。使用另一个索引(一个只包含子公司ID)会更好。

这是我最好的猜测,看看教程是否值得用于其他内容是值得的。

当然,可能是整理教程的人不会为创建一个新图形而烦恼,因此只需使用一个来自不同问题的教程或早期的教程迭代:-)我之前已经犯了这个罪。