一、 B-树
1. 每个节点包含key和data,key和data聚合在一起,查找的时候复杂度不稳定,最好的时候O(lg1)
二、B+树
1. 非叶子节点不包含data,叶子节点包含data,也就是查找一次的复杂度是稳定的,一定要遍历到叶子节点,时间复杂度O(lgN)
2. 叶子节点之间增加了指针,可以访问相邻的叶子节点,增加了区域访问的能力(就是可以将数据提前读入内存,减少磁盘IO,例如在范围查找上比较占有优势)
三、应用
1. mongodb用B-树
2.mysql用b+树
四、为什么数据库采用B+/B-树
1. 一般索引很大,不能完全放在内存里,就需要磁盘辅助存储,这种索引可以支持这个特性。
2. 适合外部存储器是磁盘,迎合磁盘结构。
参考 : http://blog.codinglabs.org/articles/theory-of-mysql-index.html
http://blog.csdn.net/wl044090432/article/details/54409240 (从 MongoDB 及 Mysql 谈B-/B+树)