面试题------B树和B+树的区别,以及为什么使用B+树而不用B树以及最左匹配原则

面试题------B树和B+树的区别

B树特点:
1.节点排序(节点存储:地址信息+索引+表结构中除了索引外的其他信息)
2.一个节点可以存多个元素,元素也排序

B+树的特点:
1.拥有B树的特点
2.叶子节点之间有指针
3.非叶子节点上的元素在叶子节点上都冗余了,也就是叶子节点中存储了所有的元素,并且排好顺序。
4.(非节点存储:地址信息+索引、叶子节点存储:索引+表结构中除了索引外的其他信息)

在Mysql中一个innodb页就是一个B+树节点,一个innodb页默认16kb,所以一般情况下,一颗两层的B+树,可以存2000万行左右的数据

区别:
B树key和value都在节点上。并且叶子节点之间没有关系。
而B+树的非叶子节点没有存value。叶子节点之间有双向指针,有引用链路。

查找方式不同,因为B树的key和value都存在节点上,因此在查找过程中,可能不用查找的叶子节点就找到了对应的值。
而B+树需要查找到叶子节点,才能获取值

结论:由于B树每个节点都存储了一条记录的所有数据,因此每次IO开销大。以及B+树的叶子节点有指针,可以很好的支持全表扫描、范围查找。

最左匹配原则

之所以最左匹配原则生效的原因是:索引是按照a排序的,b、c是没有排序的。
(a,b,c)是在 a 、ab 、abc时会走联合索引
其实ac也会走,只不过ac时,只走的a单个的索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL B是一种多路搜索,用于在数据库中快速地索引和检索数据。它是一种平衡,每个非叶子节点最多包含m个子节点,其中m为阶数。具体回答如下: MySQL B的特点有以下几点: 1. 多路搜索:B的非叶子节点可以拥有多个子节点,这样可以大幅减少层数,提高搜索效率。 2. 平衡:B的每个节点从根节点到叶子节点的路径长度相等,这样可以保持的平衡,避免出现极端情况导致搜索效率下降。 3. 顺序存储:B的节点通过顺序存储在磁盘上,这样可以提高IO效率,减少磁盘读写次数。 4. 自平衡:插入或删除一个节点后,B会通过旋转、分裂或合并等操作重新平衡,保持的平衡性。 5. 提供快速的索引和检索:通过B,可以快速地定位到所需数据的位置,减少了遍历的时间。 对于MySQL面试中关于B的问,可能会有以下几种考察角度: 1. 数据库索引:B在数据库中广泛应用于索引的实现,可以通过B迅速地定位到所需数据的位置。 2. 插入和删除操作:B的自平衡特性使得插入和删除操作的时间复杂度为O(logn),保证了高效的修改操作。 3. 阶数的选择:阶数m的选择会影响B的节点个数和的高度,进而影响查询效率和内存占用,需要根据实际应用场景进行合理选择。 4. B+和B-:MySQL中还存在B+和B-等变种,可以对其进行介绍和比较。 总结来说,MySQL B是一种用于数据库索引的多路搜索平衡,通过自平衡、顺序存储等特性,提供快速的索引和检索功能。理解B的原理和应用场景对于数据库快速查询和修改操作非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值