B+树
===
B+树是在B树上做的一个优化工作
-
B+树每个节点可以包含更多的节点内容,为什么这么做呢?第一:降低树的高度 第二:将数据范围变为多个区间,区间越多 检索速度就越快
-
非叶子节点存的是key, 叶子节点存的是key和数据
-
叶子节点指针相连,顺序查找速度更快
B 树和 B+树有什么不同呢?
===============
第一,B 树一个节点里存的是key和数据,而 B+树存储的是索引(地址),所以 B 树里一个节点存不了很多个数据,但是 B+树一个节点能存很多索引,B+树叶子节点存所有的数据。
第二,B+树的叶子节点是数据阶段用了一个链表串联起来,便于范围查找。
通过 B 树和 B+树的对比我们看出,B+树节点存储的是索引,在单个节点存储容量有限的情况下,单节点也能存储大量索引,使得整个 B+树高度降低,减少了磁盘 IO。其次,B+树的叶子节点是真正数据存储的地方,叶子节点用了链表连接起来,这个链表本身就是有序的,在数据范围查找时,更具备效率。因此 Mysql 的索引用的就是 B+树,B+树在查找效率、范围查找中都有着非常不错的性能。
综上所述mysql innodb 索引选择了B+树。
思考问题
====<