我们都知道在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秒。
分享到:
相关推荐
UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就...
MySQL 批量更新的高效方法 MySQL 批量更新是指在 MySQL 数据库中批量更新多条记录的操作。这种操作在实际应用中非常常见,例如批量更新用户信息、订单状态等。然而,批量更新的效率问题一直是一个棘手的问题。近期...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
本知识点将围绕MySQL数据库中的UPDATE语句与正则表达式结合使用的方法进行深入讲解。 MySQL的UPDATE语句用于修改表中的数据,当我们需要根据复杂的条件来更新记录时,可以利用正则表达式(REGEXP)来指定匹配模式。...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
该工具将小批量运行UPDATE和DELETE查询,以防止表级和行级锁定(使用InnoDB)。 如果必须更新或删除大量行,则也可以限制一次选择的行数。安装 pip3 install mysql_batchUPDATE示例您可以使用可用的模式运行此示例...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
本文将详细介绍如何使用Python编程语言结合Excel文件,批量新增或更新MySQL数据库中的数据。标题所指的"根据excel数据批量新增或更新mysql的表"是一个常见的需求,特别是在数据分析、数据导入导出或者自动化报表生成...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
MySQL 批量操作详解 在 MySQL 中,批量操作是指在单个数据库语句中执行多条操作的过程。这种操作可以大大提高数据库的性能和效率。本文将对 MySQL 批量操作进行详细的介绍,包括批量插入、批量修改和批量删除操作。...
MySQL 批量更新及效率对比 MySQL 批量更新是指在 MySQL 数据库中对大量数据进行更新的操作。这种操作对数据库的性能有着很大的影响,特别是在大规模数据更新时。下面我们将讨论 MySQL 批量更新的几种方法,并对其...
因此,要在MySQL中实现批量更新,你需要将所有`UPDATE`语句拼接成一个大的SQL字符串,然后一次性执行。这可以通过设置数据库连接的`allowMultiQueries=true`属性来实现。例如: ```xml <update id="batchUpdate" ...
在MySQL中,这种操作可以通过SQL语句配合正则表达式来实现,这正是"批量替换mysql字段内容"这一主题的核心。批量替换对于优化数据、修复错误或者统一格式等场景非常有用。 首先,我们需要了解MySQL中的`REPLACE()`...
总结来说,`ON DUPLICATE KEY UPDATE`是MySQL提供的一种高效处理插入和更新数据的方法,尤其适用于批量操作。通过合理设计表结构和索引,可以进一步优化性能。但在高并发或频繁更新的场景下,需要注意其可能带来的锁...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
在MySQL中,批量更新多条记录的同一个字段为不同的值是一项常见的操作,特别是在处理大量数据时,为了提高效率,我们需要避免循环执行单独的UPDATE语句。以下是一些关于如何高效地进行批量更新的方法。 首先,最...
批量修改Mysql一个数据库中表、表字段的字符集_mysql-character-update