mysql联合索引

索引结构

多个字段存储一个b+树, B+树是先按 a 进行排序,然后再 a 相同的情况再按 b 字段排序

图片无法显示

索引失效

联合索引的最左匹配原则,在遇到范围查询(如 >、<)的时候,就会停止匹配,也就是范围查询的字段可以用到联合索引,但是在范围查询字段后面的字段无法用到联合索引。

原因:出现范围查询后,后面的字段都是乱序的了,自然无法走索引

但是,对于 >=、<=、BETWEEN、like 前缀匹配这四种范围查询,并不会停止匹配。

原因:在等于的时候,后面的字段会进行匹配。

现在有一个联合索引(a,b,c)SQL: select * from a=? and b> ? and c=? 会导致失效吗?

ab会走,c不走

如何知道具体有没有走索引,走哪一个索引?

explain执行计划分析;

主要看3个字段

type,key,key_len

type的话就是实际扫描的数据,如果是all就是全表扫描,如果是count就是查询具体字段,当然还有其他几个,如index就是索引扫描,就不一一说明了。

key的话就是走的索引的名字,如果走索引的话

key_len就是走的索引字段的长度。

举个例子

联合索引abc

假设a走索引,bc没走

那么key_len等于4

因为a占4个字节

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值