mysql对于模糊查询like的一些汇总


Posted in MySQL onMay 09, 2021

1、常见用法:

(1)搭配%使用

%代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:

mysql对于模糊查询like的一些汇总

(2)搭配_使用

_代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出下面一条数据:

mysql对于模糊查询like的一些汇总

2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题

(1)尽量少以%或者_开头进行模糊查询

通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

以%或者_开头查询,索引失效

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

(2)使用覆盖索引

当查询的的条件和查询的结果都是索引中的字段的时候,这个索引我们可以称之为覆盖索引,这个时候,使用like模糊查询索引是有效的

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

InnoDB中主键可以不添加进索引中

注意:使用覆盖索引,对于字段的长度是由要求限制的,一般超过长度,索引也会失效

这里如果我查询中带有descripition字段,则覆盖索引也会失效(我这里的数据库经过测试最多只支持255长度的字段)

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

(3)使用全文索引

给字段建立Full Text索引,然后使用match(...) against(...)进行检索

mysql对于模糊查询like的一些汇总

mysql对于模糊查询like的一些汇总

注意:这种全文索引方式只对英文单词起作用,对于中文汉字支持不够友好,需要额外去mysql的配置文件做一些配置修改,让它额外支持中文

(4)使用一些额外的全文搜索引擎来解决

Lucene,solr,elasticsearch等等

基本原理是:把mysql配置文件中的ft_min_word_len=3改为1。(没有这项就直接添加),然后新建一个字段来保持分词结果,给这个字段建立全文索引。然后实现一个分词模块,把词语“大家好”拆分为“大 大家 大家好 家 家好 好”。然后用match .. against 来代替like %%,查询出来的结果跟like的结果基本相同(如果分词合理的话),但是效率比like高至少10倍以上。

总结

到此这篇关于mysql对于模糊查询like的文章就介绍到这了,更多相关mysql模糊查询like内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL表的增删改查(基础)
Apr 05 MySQL
MySQL获取所有分类的前N条记录
May 07 MySQL
MySQL优化之如何写出高质量sql语句
May 17 MySQL
MySQL完整性约束的定义与实例教程
May 30 MySQL
MySQL 不等于的三种使用及区别
Jun 03 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
MYSQL如何查看操作日志详解
May 30 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
MySQL sql_mode的使用详解
May 08 #MySQL
MySQL 数据丢失排查案例
May 08 #MySQL
MySQL update set 和 and的区别
May 08 #MySQL
MySQL查询学习之基础查询操作
May 08 #MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 #MySQL
一篇文章弄懂MySQL查询语句的执行过程
You might like
php stream_get_meta_data返回值
2013/09/29 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
深入讲解Python中的迭代器和生成器
2015/10/26 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
应届生法律求职信
2013/10/22 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
小学教学工作总结2015
2015/05/13 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS