因此,我有以下查询:
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会冻结query....is,有一种方法可以使用MySQL和/或perhaps立即执行(也许用PHP....but做求和,我该怎么做……)
发布于 2011-08-26 16:23:34
一种解决方案是使用源表上的触发器创建一个包含聚合值的汇总表,以使其保持最新。
您需要确定触发器的开销是否小于查询的开销。一些重要的因素包括:
源表的更新频率
聚合查询的运行频率。
https://stackoverflow.com/questions/7200204
复制相似问题