iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中Like模糊查询速度太慢该如何进行优化
  • 247
分享到

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

2024-04-02 19:04:59 247人浏览 独家记忆
摘要

目录一、前言:二、第一个思路建索引三、INSTR附:Like是否使用索引?总结一、前言: 我建了一个《学生管理系统》,其中有一张学生表和四张表(小组表,班级表,标签表,城市表

一、前言:

我建了一个《学生管理系统》,其中有一张学生表和四张表(小组表,班级表,标签表,城市表)进行联合的模糊查询,效率非常的低,就想了一下如何提高like模糊查询效率问题

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

二、第一个思路建索引

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

2、like keyword% 索引有效。

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

使用explain测试了一下:

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


-- 用户表
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);

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


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

like keyword% 索引有效。


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

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

三、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

比较两个效率差距不大主要原因是数据较少,最好多准备点原始数据进行测试效果最佳

附:Like是否使用索引?

  1、like %keyword    索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。

  2、like keyword%    索引有效。

  3、like %keyword% 索引失效,也无法使用反向索引。

总结

到此这篇关于mysql中Like模糊查询速度太慢该如何进行优化的文章就介绍到这了,更多相关MySQL Like模糊查询慢优化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中Like模糊查询速度太慢该如何进行优化

本文链接: https://www.lsjlt.com/news/159853.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中Like模糊查询速度太慢该如何进行优化
    目录一、前言:二、第一个思路建索引三、INSTR附:Like是否使用索引?总结一、前言: 我建了一个《学生管理系统》,其中有一张学生表和四张表(小组表,班级表,标签表,城市表...
    99+
    2024-04-02
  • MySQL中Like模糊查询速度太慢该怎么进行优化
    这篇文章主要介绍MySQL中Like模糊查询速度太慢该怎么进行优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一个思路建索引like %keyword 索引失效,使用全表扫描。like keyword% 索引有效...
    99+
    2023-06-22
  • MySQL全文索引如何解决like模糊匹配查询慢的问题
    这篇文章主要讲解了“MySQL全文索引如何解决like模糊匹配查询慢的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL全文索引如何解决like模糊匹配查询慢的问题”吧!需求需要模...
    99+
    2023-07-04
  • MySQL 中查询速度慢如何解决
    这篇文章给大家介绍MySQL 中查询速度慢如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、什么影响了数据库查询速度1.1 影响数据库查询速度的四个因素1.2 风险分析QPS:...
    99+
    2024-04-02
  • mysql语句中order by的查询速度太慢 请问需要做出哪些优化策略来提升查询速度...
    如果在MySQL中使用order by语句导致查询速度过慢,可以考虑以下优化策略: 使用索引:为排序字段建立索引可以提高查询速度。 增加内存:如果服务器内存不足,MySQL可能需要使用临时表或磁盘排序,增加内存可以避免这种情况。 减少数...
    99+
    2023-09-05
    mysql 数据库 sql
  • 如何在mysql中对查询进行优化
    本篇文章为大家展示了如何在mysql中对查询进行优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、优化方法(1)重新定义表的关联顺序(多张表关联查询时,并不一定按照SQL中指定的顺序进行,但有一...
    99+
    2023-06-15
  • MYSQL模糊查询优化(使用全文索引进行左右模糊查询) match() against ()的简单使用以及介绍
    前言: 在编写sql语句时难免会遇到需要使用 '%xx%' 的场景,但是 '%xx' 会导致索引失效,在数据量比较大的时候会严重影响性能。全文搜索使用match() against ()语法进行,使用该方法可以有效解决上述问题,即在使用索引...
    99+
    2023-09-01
    数据库
  • MySQL中如何高效的实现模糊查询(附30条优化建议)
    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要! 一般情况下like模糊查询...
    99+
    2023-09-05
    mysql 数据库 sql
  • 如何解决mysql中count查询速度很慢的问题
    这篇文章主要介绍了如何解决mysql中count查询速度很慢的问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL 大表的count()...
    99+
    2024-04-02
  • 如何通过索引优化提升PHP与MySQL的查询速度?
    摘要:在PHP与MySQL开发中,经常遇到查询速度慢的问题。本文将介绍如何通过使用索引优化提升查询速度,并提供具体的代码示例,帮助读者更好地理解和应用。引言:在网站开发过程中,查询数据库是非常常见的操作。然而,当数据量较大的时候,查询速度可...
    99+
    2023-10-21
    查询 优化 索引
  • MariaDB中如何进行查询优化和性能调整
    要在MariaDB中进行查询优化和性能调整,可以采取以下几种方法: 使用合适的索引:通过为经常查询的字段添加索引,可以加快查询速度...
    99+
    2024-04-09
    MariaDB
  • 如何在Teradata中进行复杂的SQL查询优化
    在Teradata中进行复杂的SQL查询优化,可以按照以下几个步骤进行: 确定查询的目的和需求:首先要明确查询的目的和需要获取的...
    99+
    2024-04-02
  • 如何在MySQL中设计一个性能优化的会计系统表结构以提高查询和报表生成速度?
    如何在MySQL中设计一个性能优化的会计系统表结构以提高查询和报表生成速度?在现代企业的会计系统中,数据量庞大且复杂,频繁的查询和报表生成是常见的需求。为了提高系统的性能和响应速度,设计一个优化的数据库表结构是至关重要的。规范化数据库表结构...
    99+
    2023-10-31
    MySQL 性能优化 会计系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作