关于这个话题是一个老生常谈的问题了,但是有时候好多人总是傻傻搞不明白
首先我们来总结一下b树和B+树的主要区别,关于这两个的基本定义,其实我也说不太明白,毕竟好长时间没有实际做过这些了,但是一些主要的区别我们还是必须要清楚的。
首先B树和B+树,都有节点和指针,也就是书上定义的Ki和Pi,原谅写的不够标准,不怎么熟悉Markdown的语法;下面我们就主要来说说两者的主要区别:
首先来看看B树和B+树的图片,图片来自网络:
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+树的主要特征是k的个数等于p的个数,且非叶子结点的子树指针 P[i],指向关键字值属于 [K[i], K[i+1])的子树,注意为闭区间。
根本原因:b树会在各个叶子节点存储数据,而b+树只有在叶子节点会存储数据,在同样高度的树的请开给你下,B+树会存储更多的索引,且查找速度更快。