mysql索引--------3,B树索引

本文深入探讨了B+树索引的工作原理,特别是多列索引在不同SQL查询条件下的效率表现。通过实例分析,解释了为何从左至右连续的查询条件能充分利用索引,提高查询速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这章之前,希望你能理解:二叉树B树B+树这三个概念。

如果你不能理解或者不去理会,也无妨,我会尽量描述的通俗

 我们知道B+树索引十分适合范围查找。

我们现在尝试给it表添加一个多列索引(userid,style,create_time),那么索引文件的叶子节点最终类似这样:

 上图关于create_time的类型是int这个错误可以忽略掉.

PRI代表着行主键,InnoDb索引里存的是行主键,MyISAM引擎里存储的是行数据.

我们发现上图的索引原则是:

先按照userid的大小排序,如果userid相同,按照style排序,如果style相同,按照create_time排序.

 

看完上图,如果稍微思考的话,就会发现,如果sql语句的条件是:where userid = ? 这个条件就绝对非常的快.

OK,是的。我们可以再仔细看看,会得出以下结论:

sql语句条件索引效果
where userid = ?
where style= ?
where create_time = ?
where userid = ? and style = ? 
where userid = ? and style = ?  and create_time
。。。。。。

你可以再分析其他的,但是接下来我将说的就是使用B-tree索引的结论:

从左至右不间断。

你有(A,B,C)三个索引,你的where条件可以查A,AB,ABC,但是不能查B,C,AC,BC

恭喜你获得了一个技能点,接下来的篇章,我们将更深一步探索索引的秘密。在此之前,你可以尝试建个索引玩一玩,针对某些条件查询看是否索引生效了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值