��8.3.2 B+树索引的缺点
��虽然B+树的"平衡"(Balance)特征保证了B+树索引具有良好的查找、插入和修改的性能,但B+树索引也有以下缺陷:
��⑴�B+树索引结构会增加文件插入和删除处理的空间开销;
��⑵�B+树索引结构在极端情况下,结点(B+树索引的所有结点都有相同的结构)可以是半空的 到n,目的是为了保证性能),这也将造成空间浪费。
��8.3.3 B+树上的查询
��如何利用B+树处理查询呢?我们首先给出利用B+树进行查询的普遍规则,然后再给出一个示例。假设要找出搜索码值为K的所有记录:
��⑴�首先检查根结点,找到大于K的最小搜索码值,假设是Ki,然后沿着指针Pi走道另一个结点;
��⑵�如果K<K1,那么沿着指针P1走至另一个结点;
��⑶�如果以上两个条件都不符合且K≥Km-1,其中m是该结点的指针数,则沿着指针Pm走至另一个结点。以上三步的示意如下图8-3-6所示;
|

图8-3-6:利用B +树进行查询要处理的三类指针
|
��⑷�对新到达的结点,重复以上步骤,最终到达一个叶结点。下图8-3-7给出的是在account文件中查找branch-name为Perryridge的所有记录的过程(图中绿颜色箭头表示的过程):
|

图8-3-7:B +树上查询的示例
|
��8.3.4 B+树的更新
��B+树的更新是一件很烦琐的事情,好在这一小节的内容已经在《数据结构》课程中讲过,希望大家认真复习一下学过的知识。
��8.3.5 B+树文件组织
��B+树文件组织通过在叶结点层次来组织包含真实记录的物理块来解决索引顺序文件组织中随着文件的增大而性能下降的缺点。在B+树文件组织中,B+树结构不仅用做索引,同时也是文件中记录的组织者,树叶结点中存储的是记录(如图8-3-8下面的叶结点所示)而不是指向记录的指针(如图8-3-8上面的叶结点所示)。
|

图8-3-8:B +树索引的叶结点和B +树文件组织的叶结点
|
�� |