向表中添加行时,首先检查它是否存在然后哪个是最有效的处理方式?
查询是否存在是否存在,如果不存在则插入。
或者在复制时使用?
或者简单地替换(如果行不存在,这会起作用吗?)
由于
答案 0 :(得分:3)
我认为这是MySQL中最快的方式:
REPLACE into table (col1, col2) values(1, 'ABC')
编辑:
MySQL会删除该行,如果它存在并插入一个新行。
答案 1 :(得分:2)
我认为您需要INSERT IGNORE
查看this或INSERT ON DUPLICATE KEY UPDATE
答案 2 :(得分:1)
取决于'exists'的含义,如果有一个可以检查的唯一字段,例如'email'或'login'那么你可以尝试插入和mysql引发错误,如果存在,否则你会做取代刚刚建议的juergen。
注意:如果您因任何原因需要时间戳,请不要使用替换(例如,如果它们用于加密密码或盐