位置: 编程技术 - 正文
推荐整理分享浅谈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.查看该表的字段定义:
C.查看表字段的平均长度:
D.缩小字段长度
再进行执行计划分析:
发现性能还是上不去,关键在两个表扫描的行数并没有减小(*),上面添加的索引没有太大的效果,现在查看t表的执行结果:
结果集为空,所以需要将t表的结果集做作为驱动表;4.通过上面测试验证,普通的mysql子查询写法性能上是很差的,为mysql的子查询天然的弱点,需要将sql进行改写为关联的写法:
5.查看执行计划:
6.执行时间:
缩短到了毫秒;
MySQL的id关联和索引使用的实际优化案例 昨晚收到客服MM电话,一用户反馈数据库响应非常慢,手机收到load异常报警,登上主机后发现大量sql执行非常慢,有的执行时间超过了s优化点一:SELEC
MySQL在关联复杂情况下所能做出的一些优化 昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点:第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的;
对MySQL子查询的简单改写优化 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该
标签: mysql子句
本文链接地址:https://www.jiuchutong.com/biancheng/347325.html 转载请保留说明!上一篇:MySQL索引优化的实际案例分析(mysql索引优化是什么意思)
友情链接: 武汉网站建设