好吧,我有一个问题,不是真正的问题。
我的数据库中有一个表,相当小,只有 3 列,但有增长的潜力。我的问题有两种解决方案,但不确定为什么要使用其中一种。
我有一段数据,它可能已经存在也可能不存在于数据库中。解决这个问题的两种方法。我有唯一的ID,所以很容易检查。
- 检查记录是否存在于数据库中,如果不存在,则
INSERT INTO
数据库 - 使用
REPLACE INTO
,因为我已经有了 ID。
我现在的问题是。哪个更好用。使用这两个结果中的任何一个的优缺点是什么。还是有更好的结果?
请注意,数据完全相同,因此记录不可能更新为更新的值。因此 REPLACE INTO
将插入已经存在的数据。
最佳答案
REPLACE INTO
不推荐在这里 - 你真的不需要替换任何东西。它先执行 DELETE
,然后执行 INSERT
,并产生所有后果。例如,所有索引都必须更新,如果您经常使用它,这会导致不必要的工作和索引碎片。
另一方面,ON DUPLICATE KEY UPDATE
,主要用于计数器,但您不会使用增量或任何其他值更改来更新行,因此您将不得不使用 weird像 SET id=id
或类似的语法。
检查记录是否存在于数据库中对你来说是最好的解决方案,但不要使用另一个查询让 mysql 为你检查并使用:
`INSERT IGNORE INTO ...`
这样,如果您尝试插入任何具有重复的唯一键或主键的行,它就不会被插入而不会产生任何错误。请注意可能遗漏其他错误消息的副作用,但如果您确切知道插入的内容应该没问题。
关于php - "REPLACE INTO"与 INSERT [IF],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267294/