it编程 > 数据库 > Mysql

mysql模糊查询like为什么索引不生效

78人参与 • 2026-10-10 • Mysql

前言

mysql 创建索引大部分是为了快速查询,但有时候会发现查询语句并没有大多提升,这里面终究是有些故事的。

1.模糊查询 like 引用索引分析

先直接给个结论,然后我们再分析

select * from table where name like 'jonny%';
select * from table where name like '%jonny%';

如果 name 字段加了索引,

第一条查询是会使用到索引的,

第二条不会,具体原因不深究,我们可以用 mysql 的 explain 命令分析一下。

explain select * from table where name like 'jonny%';

查询结果输出字段如下:

主要看 key 字段,其表示实际用到的索引,推荐建个表试一下,实操 比博客更有说服力。

2.有人好奇正则匹配会用到索引吗?

这里说一下,根据我的测试,不会!

3.特殊情况

凡事都要考虑特殊情况的吧,针对上述1和2的论断,有特殊情况

如果被查询字段和模糊查询条件一致的话,模糊查询无论是前缀匹配、后缀匹配、两端匹配、正则匹配,都会用到索引。

eg:

select name  from table where name like '%jonny%';
select name  from table where name regexp 'jonny';

上述2个例子中,查询条件只针对 name,被查询的字段也只是 name,那么查询会用到索引。当然还有多个字段的情况,各种组合下情况会有所不同,这里不具体分析。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

赞 (0)

您想发表意见!!点此发布评论

推荐阅读

MySQL LIKE模糊查询怎么优化才能提升性能

10-10

MySQL变量查询为什么慢?不走索引的原因和解决方法

10-10

MySQL为创建普通用户并创建库赋权的操作

10-10

一文详解MySQL常用内置函数

10-11

MySQL创建远程登录账号的详细步骤

10-11

MYSQL表中没有主键找到重复数据的解决方法

10-09

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论