一、何为B+Tree?
B+Tree是在B-Tree基础上的一种优化,由于B-Tree中,每个节点中不仅包含数据的key值,还有data值,因为每个节点的存储空间有限制,如果data数据较大时将会导致每个节点能存储的key的数量很小,当data量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。
B+Tree中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度。结构如图(网上找的一个图):

黄色表示指针,存储子节点地址信息;
紫色表示数据,除主键外的数据。
B+的特性:
1.所有关键字都出现在叶子结点的链表中,且链表中的关键字恰好是有序的;
2.不可能在非叶子结点命中;
3.非叶子结点相当于是叶子结点的索引,叶子结点相当于是存储数据的数据层;
4.B+Tree上有两个头指针,一个指向根节点,另一个指向最小key的叶子节点,所有叶子节点之间是一种链式环结构