首页 > mysql > mysql为什么要使用B+做索引结构?

mysql为什么要使用B+做索引结构?

作者:bin

要在很多数据里面查找数据,通常的做法是2种:
1.hash表
2.树结构

mysql上面2种都有使用:
二叉查找树,二叉平衡树的查找效率很高,倒是为什么mysql不用呢?
二叉树的缺点:
1.节点只能有2个子节点,导致树高太高,查询对比的层次不稳定,每下一层都会有一次系统的IO,等于IO次数更多


b树的缺点:
1.非叶子节点也存放了数据,所以不能存放更多的键值


b+树的优点:
1.节点只存键值不存数据,可以存更多的键值(因为数据放在磁盘中是分页的,每页大小是固定的)。树高相对二叉树更低,系统IO次数更少
2.键值从小到大,通过双向链表链接适合范围查找,直接遍历叶子节点,无需经过上层树枝

3.相对于B树,遍历元素因为叶子节点是链表,无需经过所有树节点,磁盘IO也更少

您必须 [ 登录 ] 才能发表留言!