Mysql - like 语句会不会走索引

Mysql - like 语句会不会走索引,第1张

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

原因是满足 最左前缀

最左前缀不仅仅适用于 组合索引 ,还适用于 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查询的时候只有 不以%开头的时候,才会使用到索引


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6149754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存