- 减少IO次数
B+树的非叶子节点只存储Key值,因此一个节点可以存储更多的Key。 盘块所能容纳的key数量也越多。一次性读内存中的需要查找的key值也就越多。相对来说IO读写次数也就降低了。(树更加矮胖)
- 查询更加稳定
对于B+树的查询,每次都要经历从根节点到中间节点再到叶子节点的过程,因此每次查询的路径长度相同(时间复杂度相同)。而B树其分支节点上也保存有数据,对于每一个数据的查询所走的路径长度是不一样的,所以查询效率也不一样。
- 遍历效率更高且天然排序
B+树遍历整棵树只需要遍历所有的叶子节点即可,而不需要像B树一样需要对每一层进行遍历,这有利于数据库做全表扫描。
B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。