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 07 MySQL
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 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 Cookie学习笔记
2016/08/23 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
python目录与文件名操作例子
2016/08/28 Python
Python对excel文档的操作方法详解
2018/12/10 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
新东网科技Java笔试题
2012/07/13 面试题
小学教学随笔感言
2014/02/26 职场文书
成龙洗发水广告词
2014/03/14 职场文书
倡议书格式
2014/04/14 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
教师节活动总结
2014/08/29 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
索赔员岗位职责
2015/02/15 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
投诉书范文
2015/07/02 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
用Java实现简单计算器功能
2021/07/21 Java/Android
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL