有两种方式作为Multiple Updates in MySQL(前两个答案)指出,执行MySQL的多次更新MySQL多个更新 - 更好的性能?
但是,这是做,如果只有更新,而不是插入的更好的方式(性能明智)。
INSERT ... ON DUPLICATE KEY UPDATE
OR 使用CASE WHEN
有两种方式作为Multiple Updates in MySQL(前两个答案)指出,执行MySQL的多次更新MySQL多个更新 - 更好的性能?
但是,这是做,如果只有更新,而不是插入的更好的方式(性能明智)。
INSERT ... ON DUPLICATE KEY UPDATE
OR 使用CASE WHEN
每个人都应该测量。
如果您在两个选项之间进行选择,第一个选项试图插入一行,并且违反唯一约束更新数据。第二种方法需要您想要更新的每个字段的布尔检查列表。列表的长度是您想要更新的行数。这对许多行来说是一个不好的选择。
带有INSERT的选项在parralel进程删除您尝试更新的几个行时可能会很危险。在这种情况下,它将尝试执行其主要任务:插入行。
但还有另一种选择:加入由UNION ALL分隔的一系列行,并将其与要更新的表相关联。这是我通常倾向于使用的选项。
UPD:我在链接的问题中添加了UNION ALL的答案。
你想使用UPDATE语句。 – Tom
是的,我想知道哪个更有效更新CASE WHEN或INSERT ...在重复键更新? – Kaushik