`
jedy
  • 浏览: 152168 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

批量update

阅读更多
我们都知道在MySQL中批量insert的速度会比一条条insert快很多。类似的,update也应该是如此,但因为update的值往往因为条件的不同而不同,只能分开做。
但是在下面的情况下,批量的update是可以做到的。
1. 查询的条件中有主键或唯一键
2. 查询的条件是等于,而不是范围。这实际上包含了1的情况

在1的情况下,可以使用
replace 或者 insert into ... values ... on duplicate key update ...
两者都是在键重复的情况下自动的做更新,但需要注意的是,键不存在的时候会做insert操作。

在2的情况下,可以建一张临时表,把要更新的值插入临时表,然后和需要更新的表连接做update
如:

+-------------+------------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+-------------+------------------+------+-----+-------------------+
| id | int(11) | NO | PRI | NULL |
| name | varchar(30) | YES | | NULL |
| email | varchar(40) | YES | | NULL |
| address | varchar(50) | YES | | NULL |
| age | int(10) unsigned | YES | | NULL |
| regist_time | timestamp | NO | | CURRENT_TIMESTAMP |
+-------------+------------------+------+-----+-------------------+

要按照id更新name
两种方法分别为

insert into user (id,name) values (?,?),(?,?) on duplicate key update name = values(name)




create temporary table tmp (id int primary key, n varchar(20));
insert into tmp values (?,?),(?,?);
update user, tmp set user.name = tmp.n where user.id = tmp.id;

这样当user的数据量是10万,更新2万的时候,包括必要的程序时间,一条条更新需要1.7秒,方法1需要0.30秒,方法2需要0.26秒。
分享到:
评论

相关推荐

    ibatis应对批量update

    ### ibatis应对批量update 在处理大量数据更新时,传统的for循环方式往往会导致效率低下。这是因为每一次循环都需要执行一次数据库连接操作,对于批量更新来说,这样的处理方式显然不够高效。为了解决这个问题,...

    Mysql Update批量更新的几种方式

    UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就...

    SqlServer中批量update语句

    标题所提到的"SqlServer中批量update语句"就是一个很好的例子,它展示了如何根据两个表之间的关联字段进行数据同步。 描述中提到了两张表——S_PERSON和S_USER,我们需要将S_USER表中的ACCOUNT字段更新为S_PERSON表...

    mysql 批量更新及效率对比

    批量 Update 是最原始的批量更新方法,每条记录执行一次 Update 语句,例如: ```sql update test_tbl set dr='2' where id=1; ``` 这种方法的性能非常差,例如更新 100000 条数据需要 15.557 秒。 方法二:...

    ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt

    ### Oracle 批量更新四种方法详解 #### 一、背景介绍 在数据库管理与应用开发过程中,经常需要对大量数据进行更新操作。特别是在Oracle数据库环境下,如何高效地执行批量更新,成为了提高系统性能的关键因素之一。...

    insert,update导出sql语句

    在数据库管理中,INSERT和UPDATE语句是两个非常基础且重要的操作。它们分别用于向数据库中插入新的数据和更新已存在的数据。这篇内容将详细解释这两个SQL语句的工作原理、用法以及如何导出这些语句,以供日后使用或...

    各数据库的批量Update操作

    批量Update操作在处理大量数据时能显著提高效率,避免循环单条更新导致的性能损耗。本文将重点介绍不同数据库系统的批量Update操作,包括MSSQL、ORACLE、MySQL和SQLite。 首先,批量Update在MyBatis框架下通常涉及...

    根据update语句自动生成select语句

    在数据库管理中,UPDATE语句用于修改已存在的数据记录,而SELECT语句则用于查询数据。在某些场景下,我们可能需要从UPDATE语句转换为SELECT语句,以验证更新操作将影响哪些行或者理解更新逻辑。这在调试、数据分析或...

    EF批量更新、批量插入、 批量删除使用的是EFUtilities,免费的操作简单,速度超级快

    为了提高性能,开发人员可以利用第三方库,如EFUtilities,来进行批量的插入、更新和删除操作。 EFUtilities是针对Entity Framework设计的一个扩展,它的主要目的是优化大数据操作的性能。这个库提供了一种简单且...

    MyBatisPlus条件构造器带条件更新update使用示例代码

    int result = userMapper.updateById(updateUser, updateWrapper); // result表示受影响的行数,如果为1则表示更新成功 if (result > 0) { System.out.println("更新成功"); } else { System.out.println("未找到...

    mybatis数据操作(增删改查+批量操作)

    在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...

    使用SQL语句批量更新数据.rar

    1. UPDATE语句:批量更新的基础是SQL的UPDATE语句。基本语法如下: ```sql UPDATE 表名 SET 列名 = 新值 WHERE 更新条件; ``` 这里的表名是你需要更新的表,列名是你要修改的字段,新值是新的数据,而WHERE子句定义...

    JDBC的批量处理语句

    "JDBC批量处理语句" JDBC 批量处理语句是指使用 JDBC 连接数据库时,批量执行 SQL 语句的方法。这种方法可以大大提高更新处理速度,减少数据库访问次数,提高应用程序的性能。 在 JDBC 中,批量处理语句包括两个...

    mdb批量更新工具

    众所周知,access数据库无法批量更新多条update语句,此工具为解决此问题而生。仅对.mdb库有效,2007版库无效。

    SQL SERVER数据库批量更新程序 1.0.0.33

    1.批量对多个sql server数据库执行查询或者更新操作。 2.支持将记录集导出为txt、xml,office excel文件中,程序根据本机安装的EXCEL版本自动决定每个sheet最大的行数,超过每个sheet最大的行数后,查询结果集自动...

    VB 利用UPDATE语句批量更新数据表中的数据

    在本教程中,我们将专注于“利用UPDATE语句批量更新数据表中的数据”这一主题。UPDATE语句是SQL语言的一个重要部分,用于修改已存在于数据库表中的记录。在VB中,我们可以结合ADO(ActiveX Data Objects)库来执行...

    ibatis list

    `<update id="updateUsersIterate" parameterClass="java.util.Map">`示例展示了如何根据`list`集合中的ID值批量更新`users`表中的`user_name`字段。注意,这里的`parameterClass`被设置为`java.util.Map`,这意味着...

    批量删除maven仓库中的lastUpdate文件

    1.将bat脚本放到maven仓库的根目录下,双击脚本。 2.即可遍历其他文件夹删除.lastUpdate文件

Global site tag (gtag.js) - Google Analytics