case when虽然最后只会有一条更新语句,但是xml中的循环体有点多,每一个case when 都要循环一遍list聚集,所以大批量拼sql的时候会比较慢,所以效率问题严重。使用的时候建议分批插入(我们公司不停用的就是这种,但是必须分批)。
duplicate key update可以看出来是最快的,但是公司一样寻常都禁止使用replace into和INSERT INTO … ON DUPLICATE KEY UPDATE,这种sql有可能会造成数据丢失和主从上表的自增id值不一致。而且用这个更新时,记得肯定要加上id,而且values()括号内里放的是数据库字段,不是java对象的属性字段