位置: 编程技术 - 正文

浅谈MySQL中的子查询优化技巧(mysql子句)

编辑:rootadmin

推荐整理分享浅谈MySQL中的子查询优化技巧(mysql子句),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql子连接,mysql子查询详解,mysql子查询语句举例,mysql子字符串,mysql子连接,mysql子查询详解,mysql子句,mysql 子表,内容如对您有帮助,希望把文章链接给更多的朋友!

mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会将子查询改写,通常情况下,我们希望由内到外,也就是先完成子查询的结果,然后在用子查询来驱动外查询的表,完成查询,但是恰恰相反,子查询不会先被执行;今天希望通过介绍一些实际的案例来加深对mysql子查询的理解:

案例:用户反馈数据库响应较慢,许多业务动更新被卡住;登录到数据库中观察,发现长时间执行的sql;

Sql为:

2.其他表的更新被阻塞:

为了尽快恢复应用,将其长时间执行的sql kill掉后,应用恢复正常;3.分析执行计划:

从执行计划上,我们开始一步一步地进行优化:首先,我们看看执行计划的第二行,也就是子查询的那部分,orderdto1_进行了全表的扫描,我们看看能不能添加适当的索引:A.使用覆盖索引:

添加组合索引超过了最大key length限制:B.查看该表的字段定义:

浅谈MySQL中的子查询优化技巧(mysql子句)

C.查看表字段的平均长度:

D.缩小字段长度

再进行执行计划分析:

发现性能还是上不去,关键在两个表扫描的行数并没有减小(*),上面添加的索引没有太大的效果,现在查看t表的执行结果:

结果集为空,所以需要将t表的结果集做作为驱动表;4.通过上面测试验证,普通的mysql子查询写法性能上是很差的,为mysql的子查询天然的弱点,需要将sql进行改写为关联的写法:

5.查看执行计划:

6.执行时间:

缩短到了毫秒;

MySQL的id关联和索引使用的实际优化案例 昨晚收到客服MM电话,一用户反馈数据库响应非常慢,手机收到load异常报警,登上主机后发现大量sql执行非常慢,有的执行时间超过了s优化点一:SELEC

MySQL在关联复杂情况下所能做出的一些优化 昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点:第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的;

对MySQL子查询的简单改写优化 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该

本文链接地址:https://www.jiuchutong.com/biancheng/347325.html 转载请保留说明!

上一篇:MySQL索引优化的实际案例分析(mysql索引优化是什么意思)

下一篇:MySQL的id关联和索引使用的实际优化案例(mysql关联查询原理)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络