B树与B+树
数据库中建立索引能加快数据的存取,但是当索引变得很大时,可能导致内存装不下。这时就需要使用多级索引来实现。而B树和B+树是实现多级索引的一种数据结构。
B树
B树是多叉树,其树中每个节点如下所示:
Ki是索引字段值,Pj只指针,指向索引块或者指向主文件中的数据块或者指向数据块中的某个记录
Pi指向的内容中的关键字都要小于Ki,Pi+1指向的内容中的关键字都大于等于Ki
特性:
- 树中每个节点至多有m棵子树(m为树的阶)
- 若根节点不是终端节点,至少有两棵子树
- 除根节点外所有的非叶节点至少有m/2(取上限)棵子树
B+树
特性:
- 树中每个节点至多有m棵子树(m为树的阶)
- 若根节点不是终端节点,至少有两棵子树
- 除根节点外所有的非叶节点至少有m/2(取上限)棵子树
- 节点中关键字的个数与子树个数相等
- 所有的叶节点包含全部关键字以及指向记录的指针(简单理解是叶子节点包含了主文件的全部索引,我们可以直接通过叶子节点来查找主文件的记录),叶子节点中的关键字是从大到小进行排序的,叶子和叶子之间是相互连接的。
B树和B+树区别
B树中节点有m个关键字,则有m+1棵子树,而B+树中节点有m个关键字,则有m个子树(每个关键字对应一棵子树,子树中的关键字小于等于父节点中那个关键字的)
B+树中叶节点包含了所有的信息,而非叶节点只是在索引上建立索引,所以B+树中非叶节点不指向记录且索引字段值可以重复出现。B树中每个节点可以是具体的记录或者是一个索引块,且要求树中的每个索引字段值只能出现一次。