好吧,我有一个问题,不是真正的问题.
我的数据库中有一个表,相当小,只有3列,但有可能增长.我有两个问题的解决方案,但不知道为什么要使用其中一个.
我有一段数据,可能已经存在,也可能不存在于数据库中.解决这个问题的两种方法.我有唯一的ID,所以很容易检查.
>检查数据库中是否存在记录,如果不存在,则INSERT INTO数据库
>使用REPLACE INTO,因为我已经有了ID.
我现在的问题是.哪一个更好用.使用2个结果中的任何一个有什么利弊.还是有更好的结果?
注意,数据完全相同,因此记录不可能使用较新的值进行更新.因此,REPLACE INTO将插入已存在的数据.
最佳答案
这里不推荐REPLACE INTO – 你真的不需要更换任何东西.它执行DELETE后跟INSERT,带来所有后果.例如,必须更新所有索引,如果频繁使用它,将导致不必要的工作和索引碎片.
原文链接:https://www.f2er.com/mysql/433405.html另一方面,有ON DUPLICATE KEY UPDATE,它主要用于计数器,但你没有以增量或任何其他值更改来更新你的行,所以你必须使用像SET id = id或类似的奇怪的语法.
检查数据库中是否存在记录对您来说是最佳解决方案,但是不要使用其他查询,而是让mysql对您进行检查并使用:
`INSERT IGNORE INTO ...`
这样,如果您尝试插入具有重复唯一键或主键的任何行,则不会在不生成任何错误的情况下插入它.请注意可能缺少其他错误消息的副作用,但如果您确切知道插入的内容,则应该没问题.