【发布时间】:2014-04-14 19:04:34
【问题描述】:
我有一个足够简单的查询,运行大约需要 4 分钟。
关于表格:
表 A 有 25 列和 18354 行 表B有24列97889行
查询:
select (sum(a.a)/sum(a.ab)) as ab_avg,
sum(a.h) as h_sum,
((sum(a.2B) + sum(a.3B) + sum(a.4B))/sum(a.ab)) as b_avg,
(sum(a.sb) / (sum(a.sb) + sum(a.cs))) as sb_pct,
(sum(a.ab) / (sum(a.hr)) as ab_hr_ratio,
(sum(a.ab) / sum(a.so)) as ab_so_ratio,
b.lastname,
b.firstname
from a, b
where b.id = a.id
group by b.year
MySQL 准确地返回它应该返回的内容,但我想这个查询不应该需要 4 分钟来运行。是不是我做错了什么导致了性能问题?
【问题讨论】:
-
你以为要花 4 分钟,那有什么问题?
-
尝试在year字段和id字段上添加索引
-
我希望你有关于 id 和年份的索引?
-
你为什么按
b.year聚合而不将它包含在select中?为什么select中有firstname和lastname,但你没有被它们聚合?而且,您能否编辑查询以包含表别名以明确哪些列来自哪些表?
标签: mysql performance