如何将这些查询重写为单个查询?

时间:2014-07-14 11:03:58

标签: mysql sql denormalization

出于速度原因,我正在对大量数据进行非规范化。

我有一个表,我首先加入另一个表和两个字段的组来计算一些聚合。然后我将这个表分组到其中一个字段上,计算一些更多的聚合,然后将这两个合并在一起。

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)在第二个查询中完全打破了我的小数据计数器。

0 个答案:

没有答案