首页 > 数据库技术 > 详细

MySQL "ON DUPLICATE KEY UPDATE" 使用

时间:2015-08-28 13:46:56      阅读:367      评论:0      收藏:0      [点我收藏+]

一、insert or update需求

      需求:如果test_table中存在记录则update,不存在则insert。

二、老做法:3条sql     

select * from test_table where id = 1;   //查询表中是否已有记录
insert into test_table (id,name) values(1,‘may‘);   //记录不存在,执行insert
update test_table set name = ‘may‘ where id = 1;  //记录存在,执行update

      先查询一次,判断记录是否存在;如果不存在,则插入记录;如果存在,则更新记录。在数据量不大的情况下,不存在效率问题,可用。

      但是,数据量一旦很大,效率则会很低,且会出现数据并发的问题,例如:数据重复,甚至跑到内存溢出。等等。而使用 “on duplicate key update"在数据量大的情况下,效率明显高很多。只有一个sql,直接在数据库层做处理,少了很多在业务层的判断。

三、使用 on duplicate key update:1条sql

    使用 on duplicate key update,1条sql可以搞定上面3条sql所做的事情,且效率更高。       

insert into test_table (id,name) values(1,‘may‘) 
on duplicate key update name = values(name);

【需要注意的是:以上on duplicate key update 中的sql需要id为主键,且表中设置主键值自动增长】

MySQL "ON DUPLICATE KEY UPDATE" 使用

原文:http://my.oschina.net/xsh1208/blog/498499

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!