【问题标题】:MySQL query with join taking way too long带有连接的 MySQL 查询耗时太长
【发布时间】: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 中有firstnamelastname,但你没有被它们聚合?而且,您能否编辑查询以包含表别名以明确哪些列来自哪些表?

标签: mysql performance


【解决方案1】:

我在 year 和 id 中添加了索引,它在 0.45 秒内运行。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2011-02-07
    • 2015-07-11
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多