【发布时间】:2021-12-14 02:01:58
【问题描述】:
我有这个问题http://sqlfiddle.com/#!9/f71a90f/1/0
我根据给定的报价计算访问者总心跳的平均值
我想过滤结果,只给我带来高于 5 的总平均心跳
该查询适用于HAVING,但它运行在所有表上,并使其在执行计划中效率不高,给出11 rows (1300 rows in the actual production base code),而结果仅为3 rows
我的桌子上有PRIMARY KEY (id) 和KEY (docid, heartbeat),但不知道如何更好地过滤它
SELECT
d.id,
d.content,
AVG(hb.heartbeat) AS beats
FROM
docs d
LEFT JOIN
heartbeats hb
ON hb.docid = d.id
GROUP BY
d.id
HAVING
beats > 5
ORDER BY
beats DESC
【问题讨论】:
标签: mysql query-optimization aggregate-functions