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中distinct和count(*)的使用方法比较
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
Mysql排序的特性详情
Nov 01 MySQL
一文带你探究MySQL中的NULL
Nov 11 MySQL
MySQL优化及索引解析
Mar 17 MySQL
MySQL优化之慢日志查询
Jun 10 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导出oracle库的php代码
2009/04/20 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
Python多线程下载文件的方法
2015/07/10 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
估算杭州有多少软件工程师
2015/08/11 面试题
法人委托书范本
2014/04/04 职场文书
优秀毕业生求职信
2014/06/05 职场文书
五心教育心得体会
2014/09/04 职场文书
邓小平理论心得体会
2014/09/09 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2015年教学工作总结
2015/04/02 职场文书
施工现场安全管理制度
2015/08/05 职场文书
汽车销售合同文本
2019/08/08 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python