Mysql - like 语句会不会走索引

2021-01-14 10:44:13 浏览数 (2)

答案是满足特定条件,,如下:

代码语言:javascript复制
like '%中国%'; 不会触发
like '%中国';  不会触发
like '中国%';  会触发

原因是满足最左前缀

说明

最左前缀不仅仅适用于组合索引,还适用于varcharlike语句,但是要注意,只有like "XXX%"的情况走索引,like "%XXX"是不走索引的。

原理介绍

Mysql innodb引擎默认的索引数据结构是b 树,组合索引会形成多字段顺序排序,比如下图,会先按照姓名进行排序,姓名相等就再按照年龄排序,所以会有组合索引的最左前缀原理,而假如只like查询姓名,例如like "张%",则也可以使用最左前缀原理,先索引到张六,然后遍历查询,直到姓名不以开头。

0 人点赞