【发布时间】:2015-03-28 11:21:10
【问题描述】:
我想知道使用二级索引的 B+ 树是如何工作的?使用二级索引,树的叶子节点可以有重复的值。当插入发生时,如果记录是插入字段的重复值,树如何知道记录在哪里?
【问题讨论】:
-
我不明白最后一部分(如果它们是插入字段的重复值,树如何知道记录在哪里但记录),你能解释一下吗?
-
如果 B+ 树在非关键字段上使用二级索引,记录插入将如何工作?
我想知道使用二级索引的 B+ 树是如何工作的?使用二级索引,树的叶子节点可以有重复的值。当插入发生时,如果记录是插入字段的重复值,树如何知道记录在哪里?
【问题讨论】:
article 提出了一种处理 B+ 树中重复键的好方法。在 B+ 树中,您只在叶节点中保留指向数据的键和指针,它们可能是重复的。例如,7 7 7。要找到它们,您还在内部节点(下图)中保留一个键 7,右指针引用具有 >= 7 的键的块,即具有这 3 个键的块。
现在,在插入时,可能会出现新的重复键不适合节点的情况,为了平衡树必须重新组织。但代价高昂,因此作者建议添加一个溢出块并将其链接到包含重复键的那个。
------------
| 5 | 7 | |
V---V---V---
--------- ---------
|7 7 7| -> |7 |
--------- ---------
【讨论】: