我有一个表存储大表的总和值。我不是经常计算它们,因为我经常需要它们。
更新这些值的最佳方法是什么?
我可以删除表中的相关行,在所有相关行上按总和执行完整的组,然后插入新数据。
或者我可以索引主表上的时间戳列,然后只将最新值相加并将它们添加到现有数据中。这很复杂,因为一些总和将不存在,因此需要运行插入和更新查询。
我意识到答案取决于数据的细节,但我想知道的是,是否值得做第二种方法;如果在第一个例子中总计数百万行,而在第二个例子中只有几十行,那么第二行的执行速度会明显加快吗?
答案 0 :(得分:1)
您可以尝试使用更新/删除触发器。然后检查插入或删除的值,并根据它修改第二个表中的总和。
答案 1 :(得分:1)
对我来说有几种方法:
答案 2 :(得分:1)
我会做这样的事情(INSERT UPDATE):
mysql_query("
INSERT INTO sum_table (col1, col2)
SELECT id, SUM(value)
FROM table
GROUP BY id
ON DUPLICATE KEY UPDATE col2 = VALUES(col2)
");
如果您需要更多示例,请与我们联系。