mysql 联合索引底层结构_最全MySQL索引与底层实现原理详解

1.你现在线上的MySQL数据库是哪个版本?什么存储引擎?

5.6 InnoDB

2.该版本的索引的底层采用的是什么数据结构?(这里回答不上来就pass了,重点是想聊下面的B+树)

B+树

3.那么你知道为什么采用B+树吗?

B+树更为矮胖,可以减少磁盘I/O的次数(查找次数等于树的深度),而磁盘I/O是最大的时间开销

B+树所有数据都在叶子节点,由于有链表结构(叶子节点从小到大顺序两两相连),只需要找到首尾,通过链表就能把所有数据取出来,在做范围查找的时候效率更高

4.B+树和Hash索引比较起来有什么优缺点吗?

Hash索引在不存在hash碰撞的情况下,只需一次读取,查询复杂度为O(1),比B+数快

Hash索引是无序的,只适用于等值查询,而不能用于范围查询,也不具备排序性。根据hash索引查询出来的数据,还要再次进行排序

B+树索引的复杂度等于树的高度,一般为3-5次IO。B+树子节点上的数据是排过序的,可以用于范围查找

数据库的多列索引中,只能用B+数索引

5.最后,谈谈最左前缀匹配?

在创建多列索引时,根据业务需求,where子句使用最频繁的一列放到最左边,因为mysql索引查询会遵循最左前缀匹配的原则,在检索数据时从联合索引的最左边开始匹配。当我们创建一个联合索引的时候,如(key1,key2,key3),相当于创建了(key1),(key1,key2)和(key1,key2,key3)三个索引,这就是最左匹配原则。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值