答案是满足特定条件, 会 ,如下:
原因是满足 最左前缀
最左前缀不仅仅适用于 组合索引 ,还适用于 varchar 的 like 语句,但是要注意,只有 like "XXX%" 的情况走索引, like "%XXX" 是不走索引的。
Mysql innodb 引擎默认的索引数据结构是 b+ 树,组合索引会形成多字段顺序排序,比如下图,会先按照姓名进行排序,姓名相等就再按照年龄排序,所以会有组合索引的最左前缀原理,而假如只 like 查询姓名,例如 like "张%" ,则也可以使用最左前缀原理,先索引到 张六 ,然后遍历查询,直到姓名不以 张 开头。
mysql在使用like查询中,能不能用到索引?在什么地方使用索引呢?
在使用like的时候,如果使用‘%%’,会不会用到索引呢?
上面的结果是全表扫描( type == ALL ),并没有使用到索引。
只是使用一个%的查询结果:
EXPLAIN SELECT * FROM user WHERE username LIKE 'ptd_%'
这个使用到了索引( type == range )。
在前面使用%时也是全表扫描,没有使用到索引。
综上,mysql在使用like查询的时候只有 不以%开头的时候,才会使用到索引 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)