永发信息网

mysql之replace和ON DUPLICATE KEY UPDATE的区别

答案:2  悬赏:0  手机版
解决时间 2021-01-30 13:06
  • 提问者网友:心牵心
  • 2021-01-29 16:23
mysql之replace和ON DUPLICATE KEY UPDATE的区别
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-01-29 16:59
1)没有key的时候,replace与insert .. on deplicate udpate相同。
2)有key的时候,都保留主键值,并且auto_increment自动+1
不同之处:有key的时候,replace是delete老记录,而录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace语句的字段不全的话,有些原有的比如c字段的值会被自动填充为默认值。
而insert .. deplicate update则只执行update标记之后的sql,从表象上来看相当于一个简单的update语句。
但是实际上,根据我推测,如果是简单的update语句,auto_increment不会+1,应该也是先delete,再insert的操作,只是在insert的过程中保留除update后面字段以外的所有字段的值。
所以两者的区别只有一个,insert .. on deplicate udpate保留了所有字段的旧值,再覆盖然后一起insert进去,而replace没有保留旧值,直接删除再insert新值。
从底层执行效率上来讲,replace要比insert .. on deplicate update效率要高,但是在写replace的时候,字段要写全,防止老的字段数据被删除。
个人倾向与用Replace。
全部回答
  • 1楼网友:渡鹤影
  • 2021-01-29 18:05
设主键没
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯