出于速度原因,我正在对大量数据进行非规范化。
我有一个表,我首先加入另一个表和两个字段的组来计算一些聚合。然后我将这个表分组到其中一个字段上,计算一些更多的聚合,然后将这两个合并在一起。
INSERT INTO final_table
SELECT
t1.field1,
t2.field2,
COUNT(DISTINCT t2.field3) AS field3
FROM table1 t1
INNER JOIN table2 t2 ON ...
GROUP BY t1.field1,t2.field2
CREATE TEMPORARY TABLE tmp
SELECT
field1,
SUM(IF(fa='constant',1,0)) AS fa
FROM table1
GROUP BY field1;
UPDATE final_table
INNER JOIN tmp ON tmp.field1 = final_table.field1
SET final_table.fa = tmp.fa
我真的想将其重写为单个查询(我猜有一些子查询) - 问题显然是第一个查询包含连接,因此第一个表中的每一行都会出现多次(作为第二个table dictates)在第二个查询中完全打破了我的小数据计数器。