所以我有以下查询:
SELECT DISTINCT d.iID1 as 'id',
SUM(d.sum + d.count*r.lp)/sum(d.count) AS avgrat
FROM abcd i, abce r, abcf d
WHERE r.aID = 1 AND
d.iID1 <> r.rID AND d.iID2 = r.rID GROUP BY d.iID1
ORDER BY avgrat LIMIT 50;
问题是....表中有数百万个条目,SUM()
和GROUP BY
会卡住查询....是否有使用 MySQL 和/或 PHP hacks 立即执行此操作的方法(也许用 PHP 进行求和......但我将如何去做......)
最佳答案
回答直接的问题:不,没有办法立即做任何事情。
如果您可以控制表更新或添加相关记录的应用程序,那么您可以添加逻辑,在每次更新时使用总和、计数和 ID 更新另一个表。然后修改后的查询以“总和表”为目标并简单地计算平均值。
关于php - 获取 MySQL 之外的 MySQL 行总和的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200204/