索引结构

多个字段存储一个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个字节

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐