mysql on duplicate key update 使用小结

insert into xxx on duplicate key update xxx=xxx语句,解决插入数据时产生的重复主键问题,前提是设置了正确的unique key。

相当于完成的操作:

if not exists (select 。。。。。。)
      insert into 。。。。。。
else
      update 。。。。。。


说明:

   1、on duplicate key update 支持在INSERT语句中有存在主键或者唯一索引的列,相应的数据在表中存在会执行更新操作,否则执行插入操作。

当然不论是否更新主键或唯一索引,这两种字段在表中数据都不允许重复。

  2、on duplicate key update在数据量不大,并且duplicate key不多的情况下,性能良好,但若是存在较多的duplicate key时,性能会大打折扣。

    解决方案要根据实际场景来定:
    a、可以先update 然后再insert ignore操作,拆解成多步

    b、可以使用类似insert ...... select ....where not exist 等方式,拆解成多步

 3、在表中存在多个唯一索引或存在并发事务的情况下,避免使用此方式,避免数据库产生死锁death lock

posted @   xuzhujack  阅读(936)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
;
点击右上角即可分享
微信分享提示