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 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
MySQL 全文索引使用指南
May 25 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 MySQL
MySQL 原理与优化之原数据锁的应用
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调用Oracle存储过程的方法
2008/09/12 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python 自动化表单提交实例代码
2017/06/08 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
keras:model.compile损失函数的用法
2020/07/01 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
劳资人员岗位职责
2013/12/19 职场文书
年会主持词结束语
2014/03/27 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
班主任工作实习计划
2015/01/16 职场文书
离婚协议书怎么写
2015/01/26 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
Python 视频画质增强
2022/04/28 Python