当前位置:网站首页>MySQL批量更新
MySQL批量更新
2022-08-02 07:00:00 【web18224617243】
文章目录
直接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的执行效率,先过滤需要修改的记录然后再更新。
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- 吃透Chisel语言.30.Chisel进阶之通信状态机(二)——FSMD:以Popcount为例
- 【ROS基础】map、odom、base_link、laser 的理解 及其 tf 树的理解
- PWA 踩坑 - 第一次加载页面后无法获取CacheStorage某些资源
- SQL server 2014 怎么一次性导出多个查询结果?
- Unity Shader学习(七)纹理图像的简单使用
- 解决Pytorch模型在Gunicorn部署无法运行或者超时问题
- Wuhan 2022 organizing of the high-performance computing added new ecological development of high-performance computing
- (2022牛客多校五)C-Bit Transmission(思维)
- OC-NSNumber和NSValue一般用来装箱拆箱
- 张驰课堂:六西格玛培训工具——箱线图
猜你喜欢
随机推荐
责任链模式(Chain Of Responsibility)
yml字符串读取时转成数字了怎么解决
跨阻放大器
电商库存系统的防超卖和高并发扣减方案
查看端口号占用
JS初识高阶函数和函数柯里化
【图像去噪】基于matlab双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】
牛客编程题中——需要处理输入较大数的题目
SQL server 2014 怎么一次性导出多个查询结果?
聊天机器人如何提升独立站的营销水平?
概率论与数理统计
SimpleChannelInboundHandler使用总结
【CNN回归预测】基于matlab卷积神经网络CNN数据回归预测【含Matlab源码 2003期】
实验7 MPLS实验
LeetCode 283. Shifting Zeros (Simple, Array)
LeetCode 2312. 卖木头块
主流定时任务解决方案全横评
OC-错误提示
Xilinx约束学习笔记—— 时序约束
实例030:回文数









