当前位置:Gxlcms > 数据库问题 > MySQL "ON DUPLICATE KEY UPDATE" 使用

MySQL "ON DUPLICATE KEY UPDATE" 使用

时间:2021-07-01 10:21:17 帮助过:2人阅读

一、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" 使用

标签:

人气教程排行