MySQL 多次更新 - 性能更好?

标签 mysql

有两种方法可以执行 MySql 多重更新,如 Multiple Updates in MySQL 中所述。 (前两个答案)

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

INSERT ... ON DUPLICATE KEY UPDATE

或者 使用CASE WHEN

最佳答案

应该测量。

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

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

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

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

关于MySQL 多次更新 - 性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032310/

相关文章:

mysql 27 秒查询(haversine vs geomfromtext)......必须是更好的方法

mysql - 从 mysql 数据库中选择 13,000 行的慢查询

asp.net - 通过从MySQL表中采样纪元来获取记录-选择最接近的值?

php - mysql自动将字符串转换为整数

mysql - Doctrine 总是返回相同的记录和模式 :update fails

mysql - 更新如果退出并添加新的 mysql ..

mysql - 最大表和设计模式

PHP - 如何使用 id 显示当前用户详细信息?

mysql - 如何在 SQL 中为 YEAR 编写 NOT IN 语句

php - 使用 jQuery 从数据库填充选择框