MySQL中like模糊查询的优化方法小结
在 MySQL 中,like 模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题。本文将介绍五种优化 MySQL 中 like 模糊查询的方法。
一、后缀匹配走索引
如果字段是索引的话,like 模糊查询在后缀匹配的情况下可以走索引。例如,查询字段中以john结尾的记录,可以使用以下语句:
SELECT * FROM table_name WHERE field_name LIKE '%john';
这种方式建议在查询时尽量使用后缀匹配,即字段的前缀固定,用后缀的模糊匹配,这样能够高效利用索引。
二、反向索引
当需要进行前缀模糊匹配时,MySQL 无法走索引。这时可以使用反向索引的方法来优化查询性能。具体步骤如下:
- 创建一个反向索引字段,将原索引字段的字符串反转后存入该字段。例如,如果原索引字段为
username,可以创建一个新字段reverse_username,将username中的字符串反转后存入reverse_username。 - 给反向索引字段添加索引。
- 在进行前缀模糊匹配查询时,对反向索引字段进行后缀模糊匹配查询。例如,如果要查询以
abc开头的记录,可以使用以下语句:
SELECT * FROM table_name WHERE reverse_username LIKE '%cba';
需要注意的是,在插入或更新数据时,要同步维护反向索引字段。
三、缩小搜索范围
即使是后缀模糊匹配,也没有精确查询使用索引那么快。因此,建议在查询时尽可能加上其他条件,缩小搜索范围,以提升性能。例如:
SELECT * FROM table_name WHERE field_name LIKE '%john' AND other_field = 'some_value';
四、使用缓存
对于一些查询非常频繁的字段,可以借助像 REDIS 这样的缓存来提升查询性能。但缓存中应尽可能放一些不经常变化的数据,这样命中率才高。
五、借助全文搜索引擎
可以借助全文搜索引擎如 Elasticsearch(ES)来进行前后缀的模糊匹配。一般的做法是在全文搜索引擎中放入要查询的条件字段和一些关键字段(如 id),然后在进行模糊匹配时,先在全文搜索引擎中拿到关键字段,再用关键字段去数据库中查询。
到此这篇关于MySQL中like模糊查询的优化方法小结的文章就介绍到这了,更多相关MySQL like模糊查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mysql Sort aborted: Out of sort memory, consider increasing
这篇文章主要介绍了mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解决方法,需要的朋友可以参考下2016-05-05
Navicat for MySQL定时备份数据库及数据恢复详解
这篇文章主要介绍了Navicat for MySQL定时备份数据库及数据恢复的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10
WIN10下cmd如何查看编码方式,命令行窗口修改UTF-8编码
这篇文章主要介绍了WIN10下cmd如何查看编码方式,命令行窗口修改UTF-8编码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09
MySQL存储引擎应用场景MyISAM vs InnoDB优势选择
这篇文章主要为大家介绍了MySQL存储引擎应用场景MyISAM vs InnoDB优势选择,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-10-10


最新评论