利用Hash需要把数据全部加载到内存中,如果数据量大,是一件很消耗内存的事,而采用B+树,是 基于按照节点分段加载,由此减少内存消耗。

和业务场景有段,对于唯一查找(查找一个值),Hash确实更快,但数据库中经常查询多条数据,这 时候由于B+数据的有序性,与叶子节点又有链表相连,他的查询效率会比Hash快的多。

b+树的非叶子节点不保存数据,只保存子树的临界值(最大或者最小),所以同样大小的节点, b+树相对于b树能够有更多的分支,使得这棵树更加矮胖,查询时做的IO操作次数也更少。