答案是满足特定条件,会,如下:
代码语言:javascript复制like '%中国%'; 不会触发
like '%中国'; 不会触发
like '中国%'; 会触发
原因是满足最左前缀
说明
最左前缀不仅仅适用于组合索引,还适用于varchar
的like
语句,但是要注意,只有like "XXX%"
的情况走索引,like "%XXX"
是不走索引的。
原理介绍
Mysql innodb引擎默认的索引数据结构是b
树,组合索引会形成多字段顺序排序,比如下图,会先按照姓名进行排序,姓名相等就再按照年龄排序,所以会有组合索引的最左前缀原理,而假如只like
查询姓名,例如like "张%"
,则也可以使用最左前缀原理,先索引到张六
,然后遍历查询,直到姓名不以张
开头。