目录
一、磁盘IO效率
B+树的非叶子节点不存储数据,只存储索引。所以树的每一层就能够存储更多的索引数量。也就是说,B+树在层高相同的情况下,比B树存储的数据更多,B+树的高度比二叉树低很多,间接会减少磁盘IO次数。
二、范围查询效率
在MYSQL中,范围查询是一个比较常用的操作,而B+树的所有存储在叶子节点的数据使用了双向链表来关联,所以B+树在查询的时候只需查两个节点进行遍历就行了,而B树需要获取所有节点,因此,B+树在范围查询上效率更高。
三、全表扫描
因为B+树的叶子节点存储所有数据,所以B+树全局扫描能力更强一点,因为它只需要扫描叶子节点,而B树需要遍历整个树。
四、自增ID
基于B+树的这样的一种数据结构,如果采用自增的整型数据作为主键,还能更好的避免增加数据的时候,带来叶子节点分裂导致的大量运算的问题。
总结:B+树的优点是它所有数据都存储在叶子节点上,非叶子节点只存储索引,磁盘IO比较少,树比较矮,叶子节点中的数据使用双向链表进行关联。