在MYSQL中我应该在什么场景下使用REPLACE以及哪些应该使用UPDATE

时间:2012-02-09 19:39:36

标签: mysql command

在MySQL中,在哪种情况下我应该使用REPLACE,哪些应该使用UPDATE。加上这个作为奖励,在什么情况下我应该使用DELETE和INSERT的组合与先提到的2相比。

2 个答案:

答案 0 :(得分:1)

如果您不确定数据库中是否存在记录,或者您不想检查它是否存在,则使用REPLACE。基本上会发生什么是如果记录存在它将被删除和插入,如果不存在它将被插入。它主要是为了方便,但不是ANSI SQL。

执行UPDATE与DELETE / INSERT相比,性能通常更好。所以一般不鼓励使用REPLACE。

您的偏好应该始终是

1. UPDATE
2. DELETE/INSERT (REPLACE)

答案 1 :(得分:1)

来自the documentation

  

REPLACE是SQL标准的MySQL扩展。它插入,   或删除和插入。对于标准的另一个MySQL扩展   插入或更新的SQL - 请参见第12.2.5.3节“INSERT ...   ON DUPLICATE KEY UPDATE语法“。

最好不要尝试编写可移植的SQL。

  

请注意,除非表格包含PRIMARY KEYUNIQUE索引,否则请使用   REPLACE声明毫无意义。它等同于INSERT,   因为没有索引可用于确定是否有新行   复制另一个。

所以还有另一种情况你不应该使用它。

  

要使用REPLACE,您必须同时拥有该表的INSERTDELETE权限。

这与UPDATE权限不同。

评论中还有一大堆建议和注意事项。

为什么没有人再阅读文档了?当你知道人们使用它时,很难让它保持最新状态。