我的表格有点如下:
Name1(Key)| Name2(Key)| Total | LastUpdate
将会有成千上万的此类记录。
现在非常频繁,我的主程序将查询源以获取更新的值。然后它将更新总计和上次更新。它可能需要更新数百个这样的行。
目前我有这个:
Update mytable SET Total=[...] AND LastUpdate=[....] WHERE Name1='x' AND Name2='y';
Update mytable SET .....
我想知道是否有更快的方式来更新行(类似于如何同时插入多行)。
总计将完全不同,但每次更新的LastUpdate时间将相同。
更新为澄清:
对总计的更改不仅仅是一个增量,而且不依赖于当前值 - 因此在这方面它不具有确定性。消息来源每隔一秒左右为我提供一个新值,我必须换一个新值。
答案 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();