平衡二叉树 例图:
平衡二叉树(N层)-数据量越大,二叉树节点会越多,高度也会极其高,我们查找数据时也会进行很多次磁盘IO,我们查找数据的效率将会极低
B树
B树-相对于平衡二叉树,每个节点存储了更多的键值(key)和数据(data),冰洁每个节点拥有更多的子节点,子节点的个数一般称为阶,上述图中的B树伟3阶B树,基于这个特性,B树查找数据读取磁盘的次数将会很少,数据的查找效率也会比平衡二叉树高很多。
B+树
B+树和B树的不同:
1:B+树 非叶子节点不存储数据,仅存储键值(key),而B树节点中不仅存储键值(key),也存储数据(data)
之所以这么做是因为数据库中页的大小是固定的,InnoDB中页默认是16KB,B+树这样只存储key,就可以存储更多的key,响应的树的阶就会更大,书就会更矮更胖,如此一来我们查找数据进行的磁盘IO次数就会更少,查询效率就会更快
2:B+树 索引的所有数据都存储在叶子节点上,而且数据是按照顺序排列的,而且B+树每个页和叶子之间是通过双向链表连接的
所以B+树 对于范围查找,分组查找以及去重查找变得异常简单,而B树因为数据分散在各个节点,要实现这一点相对来说麻烦很多。