首页 > 数据库 >MySQL模糊查询like优化方案

MySQL模糊查询like优化方案

时间:2023-03-13 11:33:06浏览次数:31  
标签:LOCATE like 索引 查询 substr str MySQL SELECT LIKE

索引失效的解决方案

  在MySQL中,模糊查询肯定要使用LIKE关键字,然后再加 %,是代表前模糊还是后模糊。数据量小的情况下,不容易看出查询的效率,但是数据量达到百万级,千万级甚至更高的时候,查询的效率就很容易显现出来了。

索引是否失效 解决方法
col_name LIKE 'ABC%' 索引有效  
col_name LIKE '%ABC' 索引失效,使用全表扫描 翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引
col_name LIKE '%ABC%' 索引失效,使用全表扫描 locate, position, instr, find_in_set等方法

 

 

 

 

如下几种方法都是不走索引的,只是前三种方法稍快于LIKE

函数 作用 示例/说明
LOCATE(substr,str)

返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。

如果str是字段,则查找字段内容,如果str不是字段,则将str作为要查的库。

SELECT LOCATE('xbar',`foobar`); #返回0

#若`foobar`是字段,则去此字段查询,而不是”foobar”字符串

SELECT LOCATE('bar',`foobarbar`); #返回4

SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

LOCATE(substr,str, pos) 返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。 SELECT LOCATE('bar',`foobarbar`,5); #返回7
POSITION('substr' IN `field`) 功能跟locate一样

SELECT `col` FROM `tb1` WHERE POSITION('keyword' IN `filed`)

SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)

FIND_IN_SET(str,strlist)    

标签:LOCATE,like,索引,查询,substr,str,MySQL,SELECT,LIKE
From: https://www.cnblogs.com/sx66/p/17210757.html

相关文章

  • 傻瓜式Java操作MySQL数据库备份(使用mysqldump命令)
    傻瓜式Java操作MySQL数据库备份(使用mysqldump命令)注释都是由chatGPT生成,有什么问题可以评论交流@Value("${backup.sql.database}")privateStringdatabases;......
  • [docker] 腾讯云启用 mysql 容器
    dockerrun-itd--namemysql-p3306:3306-eMYSQL_ROOT_PASSWORD=123456mysql:5.7参数说明:-p3306:3306:映射容器服务的3306端口到宿主机的3306端口,外部主机可......
  • linux中mysql8重置root密码
    修改my.cnf,修改参数,使登录能够跳过密码验证servicemysqldrestart,重启mysqld服务mysql-uxxx-p,任意账号无密码可进入重置root密码为空quit;修改my.cnf,删除跳过验证......
  • mysql elt interval函数区间统计
    引言 在实际的业务统计需求中有时往往需要对区间进行分组统计查询,如分数区间,工资区间查询统计等!mysql中可以利用elt函数来实现此类需求!接下来看如下时间业务需求:......
  • PostgreSQL 计数查询效率,物化视图 [重复]
    PostgreSQL计数查询效率,物化视图[重复]问题:PostgreSQL计数查询效率,物化视图[重复]可能重复:PostgreSQL计数查询优化使用PostgreSQL9.2,我们试图弄清楚是否有......
  • MySQL学习笔记-事务
    事务事务:是一组操作的集合,是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败(当操作中某一步出现......
  • 套餐信息分页查询
    需求分析:系统中的套餐数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示数据梳理交互过程:1、页面发......
  • 【项目实战】基于Python、Django以及MySQL的网上书城管理系统项目实战教程(附完整源码)
    1、项目说明基于python+Django+Mysql的网上书城系统项目实战项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)首先需要创建数据库......
  • Mybatis-lesson09-多对一查询 (查询所有的学生及对应的老师信息)-03-12
    在StudentMapper.xml需要使用复杂查询的方法,1、先单独查学生和单独查老师2、在中间使用结果映射 学生中reultMap="StudentTeacher"3、中间增加结果映射resultMap......
  • mysql-8.0.x搭建主从
    概述master/slave用作备库的形式数据库的可用性开干envcentos7.x2c4gx2mysql8.0.28x01、mysql安装mysql-8.0.x搭建x02、修改my.cnfmaster[mysql]auto-r......