MySQL索引详解
B-树
在B-树中,无论中间节点还是叶子节点都带有卫星数据(数据行记录)
B+树
在B+树中,只有叶子节点带有卫星数据,中间节点仅仅是索引。
在MySQL中,主键索引的叶子节点直接包含数据行记录,二级索引叶子节点则包含主键键值,需要回表,即回主键索引中查找数据行记录
B+树相比B-树的优势
磁盘IO次数更少
B+树的每个节点都对应着一个磁盘页,树的高度意味着查询所经历的磁盘IO的次数。
由于B+树中间节点不包含数据记录,所以同样大小的磁盘页可以容纳更多的节点元素(关键字),B+树比B-树更加“矮胖”,磁盘IO次数更少。
查询性能更稳定
B+树的查询必须查到叶子节点,而B-树只要找到匹配元素即可,无论位于中间节点还是叶子节点,因此B-树查找性能不稳定(最好只查到根节点,最坏到叶子节点)
范围查询更简单
对于范围查询,比如要查3-11之间的元素
B-树的范围查找过程
- 自顶向下,查找到范围的下限(3)
- 中序遍历到元素6
- 中序遍历到元素8
- 中序遍历到元素9
- 中序遍历到元素11,遍历结束
B+树的范围查找过程
- 自顶向下,查找到范围的下限(3)
- 通过链表指针,遍历到元素6, 8
- 通过链表指针,遍历到元素9, 11,遍历结束
参考:https://blog.****.net/qq_35571554/article/details/82759668
微信公众号:程序员小灰