`
zhaohaolin
  • 浏览: 1016354 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mysql 批量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秒。

分享到:
评论

相关推荐

    Mysql Update批量更新的几种方式

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

    mysql 批量更新及效率对比

    MySQL 批量更新的高效方法 MySQL 批量更新是指在 MySQL 数据库中批量更新多条记录的操作。这种操作在实际应用中非常常见,例如批量更新用户信息、订单状态等。然而,批量更新的效率问题一直是一个棘手的问题。近期...

    10万条数据下MySQL批量更新6种方式的性能测试.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    Mysql批量更新:6种方式的效率对比.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    mysql update正则替换sql语句

    本知识点将围绕MySQL数据库中的UPDATE语句与正则表达式结合使用的方法进行深入讲解。 MySQL的UPDATE语句用于修改表中的数据,当我们需要根据复杂的条件来更新记录时,可以利用正则表达式(REGEXP)来指定匹配模式。...

    MySQL批量更新实战:6种方式效率PK.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    mysql-batch:小批量运行大型MySQL UPDATE和DELETE查询,以防止表行级锁定

    该工具将小批量运行UPDATE和DELETE查询,以防止表级和行级锁定(使用InnoDB)。 如果必须更新或删除大量行,则也可以限制一次选择的行数。安装 pip3 install mysql_batchUPDATE示例您可以使用可用的模式运行此示例...

    从效率角度看6种MySQL批量更新方式的优劣.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    springboot mysql 批量更新 springboot batch批量更新.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    根据excel数据批量新增或更新mysql的表

    本文将详细介绍如何使用Python编程语言结合Excel文件,批量新增或更新MySQL数据库中的数据。标题所指的"根据excel数据批量新增或更新mysql的表"是一个常见的需求,特别是在数据分析、数据导入导出或者自动化报表生成...

    MySQL批量更新:6种方式对比,你知道哪种最快吗?.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    Mysql批量操作1

    MySQL 批量操作详解 在 MySQL 中,批量操作是指在单个数据库语句中执行多条操作的过程。这种操作可以大大提高数据库的性能和效率。本文将对 MySQL 批量操作进行详细的介绍,包括批量插入、批量修改和批量删除操作。...

    mysql 批量更新及效率对比.docx

    MySQL 批量更新及效率对比 MySQL 批量更新是指在 MySQL 数据库中对大量数据进行更新的操作。这种操作对数据库的性能有着很大的影响,特别是在大规模数据更新时。下面我们将讨论 MySQL 批量更新的几种方法,并对其...

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    因此,要在MySQL中实现批量更新,你需要将所有`UPDATE`语句拼接成一个大的SQL字符串,然后一次性执行。这可以通过设置数据库连接的`allowMultiQueries=true`属性来实现。例如: ```xml <update id="batchUpdate" ...

    批量替换msyql字段内容

    在MySQL中,这种操作可以通过SQL语句配合正则表达式来实现,这正是"批量替换mysql字段内容"这一主题的核心。批量替换对于优化数据、修复错误或者统一格式等场景非常有用。 首先,我们需要了解MySQL中的`REPLACE()`...

    [mysql]mysql通过on duplicate key update实现批量插入或更新(csdn)————程.pdf

    总结来说,`ON DUPLICATE KEY UPDATE`是MySQL提供的一种高效处理插入和更新数据的方法,尤其适用于批量操作。通过合理设计表结构和索引,可以进一步优化性能。但在高并发或频繁更新的场景下,需要注意其可能带来的锁...

    6种MySQL批量更新方式的优缺点比较.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    mysql批量更新多条记录的同一个字段为不同值的方法

    在MySQL中,批量更新多条记录的同一个字段为不同的值是一项常见的操作,特别是在处理大量数据时,为了提高效率,我们需要避免循环执行单独的UPDATE语句。以下是一些关于如何高效地进行批量更新的方法。 首先,最...

    批量修改Mysql一个数据库中表、表字段的字符集_mysql-character-update.zip

    批量修改Mysql一个数据库中表、表字段的字符集_mysql-character-update

Global site tag (gtag.js) - Google Analytics