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 22 MySQL
MySQL数字类型自增的坑
May 07 MySQL
为什么mysql字段要使用NOT NULL
May 13 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP中overload与override的区别
2017/02/13 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php上传excel表格并获取数据
2017/04/27 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
单链表反转python实现代码示例
2018/02/08 Python
实时获取Python的print输出流方法
2019/01/07 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
Python enumerate内置库用法解析
2020/02/24 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
信息工程学院毕业生推荐信
2013/11/05 职场文书
网络工程师职业规划
2014/02/10 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
职称评定自我鉴定
2014/03/18 职场文书
合作协议书格式
2014/08/19 职场文书
欢迎词怎么写
2015/01/23 职场文书
劳资员岗位职责
2015/02/13 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
导游词之任弼时故居
2020/01/07 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS
如何利用python创作字符画
2022/06/25 Python