众所周知,当我们要在数据库插入或者更新大量数据的时候批量处理比挨条处理要快许多,那么insert 和 update 怎样批量处理呢?
insert into table (id,value) values(1,2),(2,3),(3,4).....
这样就可以一次性插入多条数据。
那么对于update语句由于往往是因为条件不同而更新的值不同,所以只能分开做。对于下面两种情况可以这样处理:
1. 更新条件中有主键或者是唯一的键。
2. 更新条件是等于而不是范围。
对于第一点可以用replace
或者insert into table(a,b,c) values(1,2,3),(2,3,4)....on duplicate key update b = values(b)。
对于第二条可以建立一个临时的表来存储要更新的数据
create temporary table temp (id int primary key, name varchar(20), address text)
insert into temp (id,name,address) values(?,?)
update usr,temp set usr.name = temp.name,usr.address = temp.address where usr.id=temp.id
切记建立临时表的时候不可以断开数据库连接,一旦断开临时表就不存在了。
2015-01-12 17:08:04