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 相关文章推荐
数据库连接池
Apr 06 MySQL
JDBC连接的六步实例代码(与mysql连接)
May 12 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
SQLServer常见数学函数梳理总结
Aug 05 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
yii上传文件或图片实例
2014/04/01 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
Jquery 扩展方法
2010/05/06 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
js实现微信分享代码
2020/10/11 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
python redis 删除key脚本的实例
2019/02/19 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
出纳试用期自我鉴定
2014/04/07 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
国际金融专业自荐信
2014/07/05 职场文书
师范生见习报告范文
2014/11/03 职场文书
HttpClient实现文件上传功能
2022/08/14 Java/Android