0

正如MySQL 中的多个更新 (前两个答案)中指出的那样,有两种执行 MySql 多更新的方法

但是,如果只有更新而不是插入,这是更好的方法(性能方面)。

INSERT ... ON DUPLICATE KEY UPDATE

或使用CASE WHEN

4

1 回答 1

1

一个应该测量。

如果您在这两个选项之间进行选择,第一个选项是尝试插入一行,并且在违反唯一约束时更新数据。第二种方法需要对要更新的每个字段的布尔检查列表。列表的长度是您要更新的行数。那对于许多行来说是一个糟糕的选择。

如果并行进程删除了您尝试更新的几行,则带有 INSERT 的选项可能很危险。在这种情况下,它将尝试执行其主要任务:插入行。

但是还有另一种选择:将由 UNION ALL 分隔的一系列行与要更新的表连接起来。这是我通常倾向于使用的选项。

UPD:我在链接的问题中添加了 UNION ALL 的答案。

于 2013-09-26T15:54:22.130 回答