MySQL批量更新的四种方式总结
作者:凌陨心 时间:2024-01-13 17:53:08
直接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的执行效率,先过滤需要修改的记录然后再更新。
来源:https://blog.csdn.net/qq_33534428/article/details/124709747
标签:mysql,批量更新,sql
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
CSS:浮动清理另类方法
2008-11-17 11:45:00
PyTorch 如何检查模型梯度是否可导
2021-01-21 14:38:31
![](https://img.aspxhome.com/file/2023/1/103331_0s.jpg)
再谈 Web 默认字体
2009-11-24 12:48:00
Python面向对象进阶学习
2021-12-18 15:18:12
![](https://img.aspxhome.com/file/2023/7/107647_0s.png)
python使用 __init__初始化操作简单示例
2023-04-22 16:25:47
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2022-11-10 16:17:27
![](https://img.aspxhome.com/file/2023/5/87465_0s.png)
Bootstrap源码解读按钮(5)
2023-08-23 01:16:51
从浅入深带你掌握Golang数据结构map
2023-06-21 16:42:43
executesql 存储过程
2024-01-21 17:04:21
Access数据库下如何使用通用对话框的问题
2008-11-28 16:37:00
ajax xmlhttp getResponseHeader实例教程
2009-02-04 10:46:00
Pyqt5 实现窗口缩放,控件在窗口内自动伸缩的操作
2022-10-16 06:32:09
![](https://img.aspxhome.com/file/2023/7/91997_0s.jpg)
Go语言实现的web爬虫实例
2023-07-21 02:35:57
Django Form and ModelForm的区别与使用
2022-04-12 15:28:10
python通过pil模块将raw图片转换成png图片的方法
2021-08-25 00:37:31
python3实现读取chrome浏览器cookie
2023-10-18 13:18:44
使用python+pygame开发消消乐游戏附完整源码
2021-06-26 03:42:52
![](https://img.aspxhome.com/file/2023/6/95866_0s.gif)
php中Ctype函数用法详解
2023-06-19 01:43:13
详解python变量与数据类型
2021-09-24 14:38:32
SQL Server2016正式版安装配置方法图文教程
2024-01-18 10:21:52
![](https://img.aspxhome.com/file/2023/6/110976_0s.jpg)