为什么使用B+树作为索引
mysql存储是以页为单位的,使用时需要从磁盘加载到内存中,一般根节点都是常驻内存的,使用B+树可以存放更多数据,减少磁盘IO次数
1、 B+树的磁盘读写代价更低:
B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,
那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。
2、由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,
我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。
B+树与B树的区别?
(1)B树所有节点都可以映射数据,B+ 树只有叶子节点可以映射数据。
(2)B+ 树用一条链表串联所有的叶子节点。