数据库的引擎为什么采用的是B+树而不是B-树

关于这个话题是一个老生常谈的问题了,但是有时候好多人总是傻傻搞不明白

首先我们来总结一下b树和B+树的主要区别,关于这两个的基本定义,其实我也说不太明白,毕竟好长时间没有实际做过这些了,但是一些主要的区别我们还是必须要清楚的。
首先B树和B+树,都有节点和指针,也就是书上定义的Ki和Pi,原谅写的不够标准,不怎么熟悉Markdown的语法;下面我们就主要来说说两者的主要区别:
首先来看看B树和B+树的图片,图片来自网络:

B-树.jpeg

B-树的主要特征是Pi比Ki要多一个,另外非叶子结点的指针: P[1], P[2], …, P[M];其中 P[1]指向关键字小于 K[1]的子树, P[M]指向关键字大于 K[M-1]的子树,其它 P[i]指向关键字属于 (K[i-1], K[i])的子树,注意为开区间。

B+树.jpeg

而B+树的主要特征是k的个数等于p的个数,且非叶子结点的子树指针 P[i],指向关键字值属于 [K[i], K[i+1])的子树,注意为闭区间。

根本原因:b树会在各个叶子节点存储数据,而b+树只有在叶子节点会存储数据,在同样高度的树的请开给你下,B+树会存储更多的索引,且查找速度更快。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,290评论 0 25
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,475评论 1 31
  • 原文链接 B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(...
    非典型程序员阅读 1,178评论 0 3
  • B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balan...
    铁甲依然在_978f阅读 1,459评论 0 4
  • 嗨,大家好,我是小宝,首先要祝福大家中秋节快乐,全家幸福美满! 今天的顾客会得到什么礼物呢? 下面隆重介绍聚米婧氏...
    郭晓宝阅读 241评论 0 0