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 相关文章推荐
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
Dec 24 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的错误信息
2006/10/09 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python基础之getpass模块详细介绍
2017/08/10 Python
Python装饰器用法实例总结
2018/05/26 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
通过实例学习Python Excel操作
2020/01/06 Python
python简单的三元一次方程求解实例
2020/04/02 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
考试不及格的检讨书
2014/01/22 职场文书
家长给学校的建议书
2014/05/15 职场文书
电子工程求职信
2014/07/17 职场文书
交通安全横幅标语
2014/10/07 职场文书
小学生通知书评语
2014/12/31 职场文书
治庸问责工作总结
2015/08/11 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技