我们都知道在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批量更新的方式,推荐一种效率最高的更新语句写法
该工具将小批量运行UPDATE和DELETE查询,以防止表级和行级锁定(使用InnoDB)。 如果必须更新或删除大量行,则也可以限制一次选择的行数。安装 pip3 install mysql_batchUPDATE示例您可以使用可用的模式运行此示例...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...
两位爱好者共同撰写。适合数据采集更新、新增进mysql。excel-mysql好助手
[mysql]mysql通过on duplicate key update实现批量插入或更新(csdn)————程
通过实际测试对比了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 mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以这样用in指定要更新的记录: UPDATE mytable SET myfield = 'value' WHERE other_...
通过实际测试对比了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...
通过实际测试对比了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...
主要介绍了mybatis执行批量更新batch update 的方法,提供oracle和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...
通过实际测试对比了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...
通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...