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之DML语言
Apr 05 MySQL
MySQL 隔离数据列和前缀索引的使用总结
May 14 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL创建定时任务
Jan 22 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 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中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python数据类型学习笔记
2016/01/13 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
四议两公开实施方案
2014/03/28 职场文书
幼儿评语大全
2014/04/30 职场文书
机电专业求职信
2014/06/14 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
法律意见书范本
2015/06/04 职场文书
中学音乐课教学反思
2016/02/18 职场文书
合作意向书范本
2019/04/17 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
redis实现排行榜功能
2021/05/24 Redis
5行Python代码实现一键批量扣图
2021/06/29 Python