当前位置:网站首页>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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢

交换--STP协议

逆变器绝缘检测检测功能及软件实现

MySQL-FlinkCDC-Hudi实时入湖

【图像去噪】基于matlab双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】
![(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints](/img/e0/385579fc8657db8b175318bd739908.gif)
(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints

21 days learning challenge 】 【 sequential search

jvm 二之 栈帧内部结构

企业实训复现指导手册——基于华为ModelArts平台的OpenPose模型的训练和推理、基于关键点数据实现对攀爬和翻越护栏两种行为的识别、并完成在图片中只标注发生行为的人

Gradle系列——Gradle插件(基于Gradle文档7.5)day3-2

实例032:反向输出II
随机推荐
【暑期每日一题】洛谷 P1255 数楼梯
正则表达式的理解学习
(2022牛客多校五)C-Bit Transmission(思维)
2020美亚团队赛复盘
【心电信号】基于matlab心率检测【含Matlab源码 1993期】
技术管理三级跳
第06章 索引的数据结构【2.索引及调优篇】【MySQL高级】
结构体大小计算--结构体内存对齐
交换部分 VLAN
The second day HCIP
自然语言处理 文本预处理(下)(张量表示、文本数据分析、文本特征处理等)
Unity Shader学习(七)纹理图像的简单使用
张驰课堂:六西格玛测量系统的误差分析与判定
JS初识高阶函数和函数柯里化
企业实训复现指导手册——基于华为ModelArts平台的OpenPose模型的训练和推理、基于关键点数据实现对攀爬和翻越护栏两种行为的识别、并完成在图片中只标注发生行为的人
2022年数据泄露平均成本高达435万美元,创历史新高!
PWA 踩坑 - 第一次加载页面后无法获取CacheStorage某些资源
php删除一维数组中一个值
Splunk Filed Alias 字段改名
[21天学习挑战赛——内核笔记](一)——设备树的概述(硬件、目标、效果、文件类型)