在MySQL中"插入忽略"和替换之间的性能差异是什么?

Jea*_*ana 15 mysql

我想知道MySQL insert ignorereplace订单之间的性能是否存在差异.

我正在使用MySQL 5.0.31.我的所有表都在InnoDB中.

ajr*_*eal 33

insert ignore - 如果key/row存在,则跳过插入

replace - 如果key/row存在,删除匹配行,然后再次插入

所以,replace应该慢一点.
insert ignore不做更新

详情:http://dev.mysql.com/doc/refman/5.5/en/replace.html

REPLACE与INSERT的工作方式完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行

  • 在替换的基础上提出建议:如果你有一些带有"ON DELETE CASCADE"魔法的外键,DELETE会让你哭泣.它会消失的.将插入新行,但连接表将不会更新.替换可能会让你哭泣. (4认同)
  • 对于任何看到这个并且想到"OH,不,我确实有级联外键!"的人.您可以查看[插入...重复密钥更新](http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html) (3认同)