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 update set 和 and的区别
May 08 MySQL
IDEA 链接Mysql数据库并执行查询操作的完整代码
May 20 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL sql模式设置引起的问题
May 15 MySQL
MySQL自定义函数及触发器
Aug 05 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python用for循环实现九九乘法表
2018/05/31 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
python输入多行字符串的方法总结
2019/07/02 Python
python中adb有什么功能
2020/06/07 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
python递归函数用法详解
2020/10/26 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
几个常见的消息中间件(MOM)
2014/01/08 面试题
servlet面试题
2012/08/20 面试题
监理员的岗位职责
2013/11/13 职场文书
房屋租赁协议书
2014/04/10 职场文书
《画家乡》教学反思
2014/04/22 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
保险公司增员口号
2015/12/25 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
一起来学习Python的元组和列表
2022/03/13 Python