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中varchar和char类型的区别
Nov 17 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
Jun 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
linux下php上传文件注意事项
2016/06/11 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
Vue实现购物车功能
2017/04/27 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python WindowsError的错误代码详解
2017/07/23 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
入学申请自荐信范文
2014/02/26 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
闭幕式主持词
2014/04/02 职场文书
灰雀教学反思
2014/04/28 职场文书
物业管理专业自荐信
2014/07/01 职场文书
七夕活动策划方案
2014/08/16 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis