【世界播资讯】MySQL批量更新的四种方式总结
(资料图片)
目录
直接update的弊端方法一;replace into方法二:insert into [table] values… on duplicate key update方法三:创建临时表总结直接update的弊端
最近做一个需求,更新3w条数据,一个一个update去更新的,结果花了80分钟,这样性能上很差,也容易阻塞,所以就找了一些MySQL批量更新的方式,在此记录一下
方法一;replace into
这种更新会将其它字段更新为默认值,因为它是先将重复记录删掉再更新,谨慎使用
replace into `user` (id,age) values (1,"2"),(2,"3"),(3,"4"),(4,"98"); -- > 时间: 0.038s
方法二:insert into [table] values… on duplicate key update
这种方式应该也是删掉记录,再更新,但是保存的原来的其它字段数据,所以其它字段不会改变
insert into `user`(id,age) values (1,"5"),(2,"7"),(3,"2"),(4,"198") on duplicate key update age=values(age) -- > > 时间: 0.017s
方法三:创建临时表
创建临时表,将更新数据插入临时表,再执行更新,需要有建表权限
DROP TABLE if EXISTS tmp; -- > 时间: 0.016s create temporary table tmp(id int(4) primary key,age varchar(50)); -- > 时间: 0.01s insert into tmp values (1,"13"), (2,"16"),(3,"18"),(4,"18"); -- > 时间: 0.009s update `user`, tmp set `user`.age=tmp.age where `user`.id=tmp.id; -- > 时间: 0.022s
方法四:使用MySQL自带批量更新语句
update `user` set age = CASE id WHEN 1 THEN "22" WHEN 2 THEN "22" WHEN 3 THEN "22" WHEN 4 THEN "22" END WHERE id IN(1,2,3,4); -- > 时间: 0.015s update (表名) set (更新字段) = case (被更新字段) when (被更新字段值) then (更新字段值)... end where (被更新字段) in((被更新字段值)...)
举例说明:set age = CASE id WHEN 1 THEN ‘22’
简单来说就是以id为查询条件,当id=1时更新age=22,where语句提高了sql的执行效率,先过滤需要修改的记录然后再更新。
总结
到此这篇关于MySQL批量更新的四种方式的文章就介绍到这了,更多相关MySQL批量更新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
下一篇:最后一页
广告
X 关闭
X 关闭
-
-
京张高铁每日开行17对冬奥列车
京张高铁每日开行17对冬奥列车 预计冬奥服务保障期运送运动员、技术官员、持票观众等20万人次 2月6日,2022北京新闻中心举行“北
-
-
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》 9岁小号手苦练悬臂吹响颂歌 2月4日晚,在北京冬奥会开幕式上,9岁的
-
-
2022北京冬奥会开幕式这19首乐曲串烧不简单
多名指挥家列曲目单 再由作曲家重新编曲 本报专访冬奥开幕式音乐总监赵麟 开幕式这19首乐曲串烧不简单 “二十四节气”倒计时、
-
-
“一墩难求” 冰墩墩引爆购买潮
设计师:没想到冰墩墩成爆款一墩难求冰墩墩引爆购买潮 北京冬奥组委:会源源不断供货北京冬奥会吉祥物冰墩墩近日引爆购买潮,导致一墩难求