【发布时间】:2016-02-13 05:55:28
【问题描述】:
在一项作业中,我收到了一个查询并要求对其进行优化。 查询是:
选择 C.yearID 为年份, 名称为teamName, C.lgID 作为联赛, D.cnt 作为 totalBatters, C.cnt 如上AverageBatters 从 (选择 count(masterID) as cnt, A.yearID, A.teamID, A.lgID 从 (选择 主ID, 团队ID, 年号, lgID, 总和(AB), 总和(H), 总和(H)/总和(AB)作为平均值 从 击球 GROUP BY teamID , yearID , lgID , masterID) B, (select 团队ID, 年号, lgID, 总和(AB), 总和(H), 总和(H)/总和(AB)作为平均值 从 击球 其中 ab 不为空 GROUP BY teamID , yearID , lgID) A 在哪里 A.avg >= B.avg AND A.teamID = B.teamID AND A.yearID = B.yearID AND A.lgID = B.lgID GROUP BY teamID , yearID , lgID) C, (选择 count(masterID) as cnt, yearID, teamID, lgID 从 击球 其中 ab 不为空 GROUP BY yearID , teamID , lgID) D, 团队 在哪里 C.cnt / D.cnt >= 0.75 AND C.yearID = D.yearID AND C.teamID = D.teamID 和 C.lgID = D.lgID AND team.yearID = C.yearID AND 团队.lgID = C.lgID AND team.teamID = C.teamID我想知道可以做些什么来优化它?我对这个概念很陌生,对如何进行有点困惑。一般来说,如何优化包含select语句的子查询?
【问题讨论】:
-
这对于 Stack Exchange 的“代码审查”站点来说是一个更好的帖子,因为您正在寻求有关代码的帮助,而不是一般的 SQL 问题/问题。这是正确的网站:Code Review
-
@danjuggler 将来,您可以使用更简单的语法将链接嵌入到任何 SE 站点:
[site.SE],在这种情况下,[CodeReview.SE]将自动解析为 Code Review。 :) -
您是否已尽力优化查询并寻求进一步改进?如果是这样,代码审查会是一个更好的地方,只要代码正常工作。
-
代码审查交叉帖子已作为题外话关闭,因为代码审查要求代码作者提出问题。
标签: mysql optimization subquery query-optimization