INSERT INTO ON DUPLICATE KEY UPDATE和UPDATE之间是否存在性能差异?
如果我知道可以更新的值 - 我应该使用UPDATE还是不重要?
答案 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 ...