您现在的位置是:群英 > 数据库 > MySQL数据库
MySql中LEFT JOIN关联查询速度过慢问题是如何解决优化的?
Admin发表于 2022-10-24 09:43:012018 次浏览
这篇文章主要介绍了title,讲解详细,步骤过程清晰,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。



问题背景

两张表一张是用户表a(主键是int类型),一张是用户具体信息表b(用户表id字段是varchar类型)。

因为要显示用户及用户信息,所以需要关联查询,但发现left join后查询缓慢,耗时太长。用户表数据2万左右。

问题分析及处理

1、EXPLAIN 命令对 SELECT 语句进行分析

type 字段提供了判断查询是否高效的重要依据依据. 通过 type 字段, 我们判断此次查询是 全表扫描 还是 索引扫描 等.

ALL: 表示全表扫描, 这个类型的查询是性能最差的查询之一.

通常来说, 我们的查询不应该出现 ALL 类型的查询, 因为这样的查询在数据量大的情况下, 对数据库的性能是巨大的灾难. 如一个查询是 ALL 类型查询, 那么一般来说可以对相应的字段添加索引来避免.

2、新增索引

因为发现表b字段之前并没有建索引。

alter table a add index idx_mbrID (mbrID);
登录后复制

再次Explain分析

发现type变为了ref,根据不同的 type 类型的性能关系(

ALL < index < range ~ index_merge < ref < eq_ref < const < system
登录后复制

)比较后感觉可以了,于是执行查询。

3、修改索引字段类型一致

执行查询后发现执行速度并未优化,仔细看之前同事设计的表,发现索引类型字段不一致,于是修改为varchar 为int后再次查询发现查询速度明显提升。

即使之前java代码里面写的string,数据库改为int目前测试可正常使用

总结

解决完问题后,翻起了开发手册,发现索引规约明确强制join时数据类型必须一致,被关联字段必须有索引!!!


关于“MySql中LEFT JOIN关联查询速度过慢问题是如何解决优化的?”的内容就介绍到这,感谢各位的阅读,相信大家对MySql中LEFT JOIN关联查询速度过慢问题是如何解决优化的?已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-08-12 17:58:11 
摘要:本篇文章给大家带来了关于mysql原理中InnoDB存储引擎架构设计的相关知识,希望对大家有帮助。
2022-08-08 17:30:15 
摘要:方法:1、利用“ALTER DATABASE MOUNT;”语句将数据库设置为Mount模式;2、利用“alter database open read only;”语句将数据库设置为只读即可。当数据库被设置为只读状态时,用户只能查询数据。
2022-10-24 09:24:06 
摘要:本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于数据库拉链表的相关问题,拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史,下面一起来看一下,希望对大家有帮助。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部