服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL批量更新的四种方式总结

MySQL批量更新的四种方式总结

2023-05-29 11:23凌陨心 Mysql

最近需要批量更新大量数据,习惯了写sql,所以还是用sql来实现,下面这篇文章主要给大家总结介绍了关于MySQL批量更新的四种方式,需要的朋友可以参考下

直接update的弊端

最近做一个需求,更新3w条数据,一个一个update去更新的,结果花了80分钟,这样性能上很差,也容易阻塞,所以就找了一些MySQL批量更新的方式,在此记录一下

方法一;replace into

这种更新会将其它字段更新为默认值,因为它是先将重复记录删掉再更新,谨慎使用

?
1
2
replace into `user` (id,age) values (1,'2'),(2,'3'),(3,'4'),(4,'98');
-- > 时间: 0.038s

方法二:insert into [table] values… on duplicate key update

这种方式应该也是删掉记录,再更新,但是保存的原来的其它字段数据,所以其它字段不会改变

?
1
2
insert into `user`(id,age) values (1,'5'),(2,'7'),(3,'2'),(4,'198') on duplicate key update age=values(age)
-- > > 时间: 0.017s

方法三:创建临时表

创建临时表,将更新数据插入临时表,再执行更新,需要有建表权限

?
1
2
3
4
5
6
7
8
9
10
11
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自带批量更新语句

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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批量更新内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_33534428/article/details/124709747

延伸 · 阅读

精彩推荐
  • MysqlMysql字符串截取及获取指定字符串中的数据

    Mysql字符串截取及获取指定字符串中的数据

    小编童鞋最近接了一个新需求,需要在MySql的字段中截取一段字符串中的特定字符,下面小编把我的核心代码分享给大家,对mysql 字符串截取相关知识感兴...

    深入学习ing5082020-12-13
  • MysqlMySQL中distinct与group by语句的一些比较及用法讲解

    MySQL中distinct与group by语句的一些比较及用法讲解

    这篇文章主要介绍了MySQL中distinct与group by的一些比较及用法讲解,二者在查询操作中的用法有很多相似之处,需要的朋友可以参考下 ...

    jia589602272020-05-31
  • MysqlMySQL索引失效原理

    MySQL索引失效原理

    索引可以加快查找速度是因为,在每一层的兄弟节点之间,索引是有序的,因此可以通过二分法快速定位到相应位置。如果一些操作破坏了索引排列的有序...

    bkpp9768162022-01-24
  • MysqlMysql添加用户和设置权限的操作方法

    Mysql添加用户和设置权限的操作方法

    这篇文章主要介绍了Mysql添加用户和设置权限的操作方法,主要包括管理用户,权限控制的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有...

    怪 咖@8672022-07-28
  • Mysqlmysql 8.0.12 解压版安装教程

    mysql 8.0.12 解压版安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 解压版安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    小鲁班跑慢点1972020-09-04
  • Mysqlmysql server 8.0.3安装配置方法图文教程

    mysql server 8.0.3安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql server 8.0.3安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    MYSQL教程网6682020-09-04
  • Mysql4T的数据库卡死后,没掌握MySQL源码的我后悔莫及……

    4T的数据库卡死后,没掌握MySQL源码的我后悔莫及……

    DBA 这个职业,一直被业界很多人认为即将要被机器替代了,的确,因为云时代的出现,自动化平台的出现,很多操作,都被机器替代了,所以得出的结论是...

    dbaplus社群7992021-10-18
  • Mysqlmysql 8.0.22 winx64安装配置方法图文教程

    mysql 8.0.22 winx64安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql8.0.22 winx64安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    追梦小男孩12402021-03-11