为什么数据库用B+树(3条法则需记牢)

1.I/O次数更少

 B+树的层数比其他树(二叉搜索树等)小,那么I/O的次数就会少,因为读取一个节点后,再判断去哪个节点继续读取(一次I/0操作),说明层数越高,那么读取I/O的次数也就越多。

对于B+树来说,中间节点是存的索引没有存数据,因此同样大小的磁盘页可以容纳更多的节点元素。比B+树也更加“矮胖”,因此查询I/O次数更少。

2.查询更加稳定

 每次查询都必须查询到叶子节点,而B-树(中间节点也带有数据,中间节点+叶子节点才是全部数据)只要找到了匹配元素即可,无论是中间节点还是叶子节点,因此B-树的查询性能并不稳定(最好的情况直接是根,最坏的情况在叶子节点)

3.更利于查询范围

 叶子节点首尾相互连接的,只需要在链表上做遍历。

B+(中间节点只存地址,不存数据,叶子节点全存数据):

B-(中间节点也带数据,所以中间节点存的节点少,因此每个节点能够容纳的空间是固定的,InnoDB从磁盘取到内存,一个节点4KB(实则是一个页表)):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值