MySQL批量更新的四种方法

这篇具有很好参考价值的文章主要介绍了MySQL批量更新的四种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql 批量更新,数据库,mysql,mysql,数据库,mybatis

最近做一个需求,更新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批量更新的四种方式的文章就介绍到这了,希望可以对你有所帮助。

来源:微点阅读  https://www.weidianyuedu.com文章来源地址https://www.toymoban.com/news/detail-579670.html

到了这里,关于MySQL批量更新的四种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL与ES数据同步的四种方案及实践演示

    也就是同步调用,这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES。 1.业务逻辑简单 2实时性高 1.硬编码,有需要写入mysql的地方都需要添加写入ES的代码 2.业务强耦合 3.存在双写失败丢数据风险 4.性能较差:本来mysql的性能不是很高,再加一个ES,系统的性

    2024年02月09日
    浏览(42)
  • 【mysql】事务的四种特性的理解

    🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风翻盘 。 🛸 Mysql专栏 : Mysql内功修炼基地 家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我

    2024年02月12日
    浏览(46)
  • MySQL在Linux上的四种安装方式

    目录 前言 一、仓库安装 二、本地安装 三、容器安装 四、源码安装 博主的配置信息: Windows版本:Win10 VMware虚拟机版本:Vmware Workstation Pro 17 Linux版本:Red Hat Enterprise Linux 9.1 MySQL版本:MySQL Community Server 8.0.32 保证Linux的正常联网以及配置yum仓库。 可以在MySQL官网地址:https:

    2024年01月23日
    浏览(48)
  • 【数据库的四种隔离级别】

    在关系型数据库中,隔离级别是指多个事务并发执行时,彼此之间的隔离程度。数据库的四种隔离级别如下: 最低级别的隔离级别,一个事务可以读取到另一个事务未提交的数据,可能会出现脏读、不可重复读和幻读等问题。 一个事务只能读取到另一个事务已经提交的数据

    2024年02月13日
    浏览(51)
  • MySQL入门必备:Linux中部署MySQL环境的四种方式详解

    目录 一、仓库安装 二、本地安装 三、Docker中安装 四、源码安装 首先需要下载mysql软件包: 1、进入MySQL官网 2、进入MySQL社区版下载 3、使用yum方式下载MySQL 4、下载对应版本的软件包 5、这里可以不登录直接下载软件包 6、复制下载链接 7、然后进入到linux命令行中使用命令下

    2024年02月07日
    浏览(35)
  • 数据库事务的四种隔离级别

    事务 数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单元,由一个有限的数据库操作序列构成。——维基百科 简而言之:一系列数据库操作语句组成事务。 数据库事务的隔离级别有四种: 读未提交(Read Uncommitted):事务中的修改可以被其他事务读取,

    2024年02月04日
    浏览(42)
  • MySQL如何实现数据批量更新

    最近需要批量更新大量数据,习惯了写sql,所以还是用sql来实现,下面这篇文章主要给大家总结介绍了关于MySQL批量更新的方式,需要的朋友可以参考下 这种场景直接通过update语句更新即可,如: 1 UPDATE t_sys_user SET ` desc ` = \\\'CaseWhen-0\\\' WHERE id IN (1001,1002,1003); 循环遍历逐条更新 这种方

    2024年02月07日
    浏览(43)
  • MySQL 更新数据 不同条件(批量)更新不同值

    一般在更新时会遇到以下场景:1.全部更新;2.根据条件更新字段中的某部分内容;3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法。 (1)根据条件更新值 根据指定条件更新(多列)(全部更新) 把表中 [符合条件的行的] 列名1字段中的值全部修改为值1 [,

    2023年04月16日
    浏览(37)
  • MySQL的四种安装方式(新手必看、详解、保姆级教程)

    MySQL是一个 关系型数据库管理系统 , 由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关系型数据库管理系统

    2024年02月20日
    浏览(40)
  • 记一次批量更新mysql数据过程

    一、前言 需求背景:mysql数据库中有一个表的数据(600多万)有一个字段的内容需要解密再通过另外一种加密方式进行加密再回存。通过java程序计算完成更新。 二、方案一 一条条计算更新。这里是将手机号解密,在通过另外一种方式回存。 算法步骤: 1、查询需要解密的数

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包