ITPub博客

首页 > 数据库 > Oracle > MySQL SQL优化:关联子查询的局限性

MySQL SQL优化:关联子查询的局限性

原创 Oracle 作者:幕南风 时间:2014-07-03 14:14:35 0 删除 编辑

这是MySQL SQL优化的第三篇。

公司某个业务系统频繁抛出问题SQL,我们对此类SQL做了基本面统计:

此类SQL近期共执行了12次,最长一次花费480秒,最短286秒

t1表的rows有90多万,始终会扫描这么多不需要的数据

这是由于MySQL查询优化器在处理相关子查询方面存在局限性

MySQL总是会将相关的外层表压到子查询中,它认为这可以更高效地查找数据行。
这就意味着MySQL先选择对外层表进行全表扫描,然后根据相关字段一个一个执行子查询,

如果是个小表,情况可能还不会引起我们注意,但是如果外层表示一个非常大的表,那么这个查询的性能会非常槽糕,

很不幸,我们的场景刚好应了后者


我们优化后的执行效果:




Good Luck!

<!-- Baidu Button BEGIN --> <

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1208268/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

  • 博文量
    544
  • 访问量
    1652828