一、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为主键,且表中设置主键值自动增长】
时间: 2024-10-07 03:50:22