B+Tree作为Mysql索引的优势?

B+Tree的性质:

  • 非叶子节点只存储键值信息。(可以存放更多的索引)
  • 所有叶子节点之间都有一个链指针。(提高区域访问效率)
  • 数据记录都存放在叶子节点中。(查找数据更加快速)

1.非叶子节点只存储键值信息--Mysql的InnoDB存储引擎查找到一行记录最多只需要3次磁盘IO操作(10亿条数据量)

InnoDB存储引擎中页的大小为16KB,一般表的主键类型为INT(占用4个字节)或BIGINT(占用8个字节),指针类型也一般为4或8个字节,也就是说一个页(B+Tree中的一个节点)中大概存储16KB/(8B+8B)=1K个键值(因为是估值,为方便计算,这里的K取值为〖10〗^3)。也就是说一个深度为3的B+Tree索引可以维护10^3 * 10^3 * 10^3 = 10亿 条记录。

2.所有的叶子结点之间都有双向指针--提高了Mysql顺序查找的能力

相比较B-Tree,只能一个一个结点的进行中序遍历,而对于哈希索引是无法支持范围查询,B+Tree可以通过结点之间的双向指针进行查找

3.数据全部存储在叶节点中可直接获取到数据,减少了IO次数,提高了效率

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值