采用 B+ 树的原因是 B 类的数每层节点数目多,层数少,可以减少磁盘 IO 次数,查询数据的时候,最坏情况 IO 次数等于树的高度。
但是 B 树在提高了磁盘 IO 性能的同时,并没有解决元素遍历效率低下的问题。正是为了解决这个问题,B+ 树通过遍历叶子节点就可以实现整棵树的遍历,并且在数据库中范围查询是非常频繁的,而 B 树对于这类查询性能较差。
平衡二叉树的查询效率较高,但维护平衡二叉树成本非常高,在新数据插入后,需要1次或多次的左旋或者右旋来保持树的平衡,所以插入性能较差。
综合来说,B+ 树是比较好选择。