0

我有一张桌子,有点如下:

Name1 (Key)|Name2(Key)|总计|LastUpdate

将有数十万条这样的记录。

现在非常频繁地,我的主程序将查询源以获取更新的值。然后它将更新总数和最后一次更新。它可能必须更新数百个这样的行。

目前我有这个:

Update mytable SET Total=[...] AND LastUpdate=[....] WHERE Name1='x' AND Name2='y';
Update mytable SET .....

我想知道是否有更快的更新行的方法(类似于如何同时插入多行)。

Totals 将完全不同,但每次更新的 LastUpdate 时间将相同。

更新澄清:

对总计的更改不仅仅是一个增量,也不取决于当前值 - 因此在这方面它不是确定性的。源每秒左右为我提供一个新值,我必须输入一个新值。

4

1 回答 1

0

如果单独进行更新的速度很慢,也许你可以做这样的事情

CREATE TABLE mytable_updates
(
  Name1 VARCHAR(50) NOT NULL,
  Name2 VARCHAR(50) NOT NULL,
  total_increase INT NOT NULL
  PRIMARY KEY(Name1, Name2)
)

INSERT INTO mytable_updates VALUES ('x', 'y', 5), ('x', 'z', 3);
...

UPDATE mytable_updates 
LEFT JOIN mytable USING (Name1, Name2)
SET
  Total = Total + total_increase,
  LastUpdate = NOW();
于 2012-07-11T08:44:10.313 回答