为什么MySQL喜欢用B+树?
来一张小林的图
二叉树为什么不能做数据库索引的实现?
只要是二叉树,就避免不了因为数据增多而导致的树高度增加,这带来的IO次数是数据库所不能接受的。
那么为什么用B+树而不是B树?
因为B树把所有的数据直接存储在节点上,即使是非叶子节点也有数据,这会导致如果只是简单地查找单个数据,在从树顶到目标数据途中经过的节点上的数据都是无用的。浪费空间
B+树存在冗余节点,插入和删除时没有复杂的树变形,效率很快。
而且,B+树的所有叶子节点之间还有一个链表进行连接,这种设计对范围查找是很高效的,有了链表,就可以直接在叶子节点之间直接查询了。
聚集索引和二级索引的区别:聚集索引的叶子节点是存放的直接数据,二级索引存放的是主键值。