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
0
投稿

猜你喜欢

  • CSS:浮动清理另类方法

    2008-11-17 11:45:00
  • PyTorch 如何检查模型梯度是否可导

    2021-01-21 14:38:31
  • 再谈 Web 默认字体

    2009-11-24 12:48:00
  • Python面向对象进阶学习

    2021-12-18 15:18:12
  • python使用 __init__初始化操作简单示例

    2023-04-22 16:25:47
  • Python通过TensorFLow进行线性模型训练原理与实现方法详解

    2022-11-10 16:17:27
  • 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
  • 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
  • php中Ctype函数用法详解

    2023-06-19 01:43:13
  • 详解python变量与数据类型

    2021-09-24 14:38:32
  • SQL Server2016正式版安装配置方法图文教程

    2024-01-18 10:21:52
  • asp之家 网络编程 m.aspxhome.com