性能问题:ON DUPLICATE KEY UPDATE vs UPDATE(MySQL)

时间:2011-02-17 23:33:06

标签: mysql

INSERT INTO ON DUPLICATE KEY UPDATE和UPDATE之间是否存在性能差异?

如果我知道可以更新的值 - 我应该使用UPDATE还是不重要?

2 个答案:

答案 0 :(得分:8)

有区别。

INSERT查询必须检查每列的约束,以查看是否通过添加该行来违反它们。如果是,则需要找到匹配的行进行更新并执行更新。

UPDATE查询只需查找要更新的行并执行更新。

如果您知道该行已存在,则应该UPDATE它。

答案 1 :(得分:0)

考虑以下事项:

  • 更新...设置...
UPDATE ... SET ... WHERE <condition when to update>

表示数据库引擎会遍历整个表,更新所有符合条件的记录。如果不指定条件,它将对表中的每条记录执行更新。

  • 在重复密钥更新时插入...
INSERT INTO ... ON DUPLICATE KEY UPDATE ...

数据库引擎会尝试插入新记录,如果发现你提供的key已经存在,只会更新那条记录,仅此而已。 键列已编入索引,因此它几乎会立即找出键是否已存在。

阅读 this 答案以了解有关 KEY 列的更多详细信息。

因此,如果您只需要更新一条记录,可以使用 INSERT INTO ... ON DUPLICATE KEY ...

更快地完成