MySQL中Like模糊查询速度太慢该如何进行优化

MySQL中Like模糊查询速度太慢该如何进行优化

转载自: https://www.zhangshengrong.com/p/boNwZxnOaw/

一、前言:

mysql进行联合的模糊查询,效率非常的低,就想了一下如何提高like模糊查询效率问题

注:看本篇博客之前请查看:Mysql中如何查看Sql语句的执行时间

二、第一个思路建索引

使用explain测试了一下:

1、like %keyword 索引失效,使用全表扫描。

 explain select id,username,password,real_name,sex,birth,mobile,head_pic
 from t_users where username like '%wh';

在这里插入图片描述

2、like keyword% 索引有效。

 explain select id,username,password,real_name,sex,birth,mobile,head_pic
 from t_users where username like 'wh%';

在这里插入图片描述

3、like %keyword% 索引失效,使用全表扫描。

 explain select id,username,password,real_name,sex,birth,mobile,head_pic
 from t_users where username like '%wh%';

在这里插入图片描述

原始表(注:案例以学生表进行举例)

-- 用户表
create table t_users(
                        id int primary key auto_increment,
-- 用户名
                        username varchar(20),
-- 密码
                        password varchar(20),
-- 真实姓名
                        real_name varchar(50),
-- 性别 1表示男  0表示女
                        sex int,
-- 出生年月日
                        birth date,
-- 手机号
                        mobile varchar(11),
-- 上传后的头像路径
                        head_pic varchar(200)
);

建立索引

#create index 索引名 on 表名(列名);
create index username on t_users(username);

三、INSTR

这个我最开始都没听说过,今天查阅了一下资料,才知道有这个宝贝东西,

instr(str,substr):返回字符串str串中substr子串第一个出现的位置,没有找到字符串返回0,否则返回位置(从1开始)

#instr(str,substr)方法
select id,username,password,real_name,sex,birth,mobile,head_pic
      from t_users
      where instr(username,'wh')>0 #0.00081900
#模糊查询
select id,username,password,real_name,sex,birth,mobile,head_pic
        from t_users
        where username like 'whj'; # 0.00094650

在这里插入图片描述
在这里插入图片描述

四、主要区别关系参考

链接: https://blog.csdn.net/weixin_44028926/article/details/106301863

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值