快速更新不同的行

时间:2012-07-11 08:28:20

标签: mysql sql

我的表格有点如下:

Name1(Key)| Name2(Key)| Total | LastUpdate

将会有成千上万的此类记录。

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

目前我有这个:

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

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

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

更新为澄清:

对总计的更改不仅仅是一个增量,而且不依赖于当前值 - 因此在这方面它不具有确定性。消息来源每隔一秒左右为我提供一个新值,我必须换一个新值。

1 个答案:

答案 0 :(得分: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();