我们都知道在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示例您可以使用可用的模式运行此示例...
两位爱好者共同撰写。适合数据采集更新、新增进mysql。excel-mysql好助手
[mysql]mysql通过on duplicate key update实现批量插入或更新(csdn)————程
项目中经常的需要使用批量操作语句对数据进行操作,使用批量语句的时候需要注意MySQL数据库的条件限制,这里主要是数据的大小限制,这里对批量插入、批量查找及批量更新的基础操作进行下简单的汇总。 1、批量insert...
首先mysql更新数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以这样用in指定要更新的记录: UPDATE mytable SET myfield = 'value' WHERE other_...
主要介绍了mybatis执行批量更新batch update 的方法,提供oracle和mysql两种方法,非常不错,需要的朋友参考下
在mysql中批量更新我们可能使用update,replace into来操作,下面小编来给各位同学详细介绍mysql 批量更新与性能吧
实际需求中,需要对某张表某字段里面的内容进行批量替换,普通的思考流程如下:SELECT出来str_replace替换UPDATE写入实际这样极其浪费资源以及消耗资源,MYSQL内置了一个批量替换的语法 代码如下:UPDATE table SET ...
今天我们来了解MySQL唯一索引的一些知识:包括如何创建,如何批量插入,还有一些技巧上SQL; 这些问题的根源在什么地方?有什么共同点?MySQL中也有分区对齐的概念?唯一索引是在很多系统中都会出现的要求,有什么...
主要介绍了mysql 一次更新(update)多条记录的思路,需要的朋友可以参考下
Mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数。 (1)mysql replace 函数 语法:...
mysql数据库Insert语句后加ONDUPLICATE KEY UPDATE,保证唯性如果在INSERT语句末尾指定了ON DUPLICATE KEY UP
MYSQL中批量替换某个字段的部分数据,具体介绍如下所示: 1.修改字段里的所有含有指定字符串的文字 UPDATE 表A SET 字段B = replace(字段B, 'aaa', 'bbb') example: update table set url= replace(url, 'aaa', '...
死锁的本质是资源竞争,批量插入如果顺序不一致很容易导致死锁,我们来分析一下这个情况。为了方便演示,把批量插入改写为了多条 insert。 先来做几个小实验,简化的表结构如下 CREATE TABLE `t1` ( `id` int(11...
使用MySQL 4.0版或更高更新您可以通过加入两个或多个表一起一表;通过加入两个表连同您可以更新一个表的记录在相关领域的总部设在另一个表。
MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source。 但是这两个命令的导入效率差别很大,具体请看最后的比较。 (还有sqlimport和LOAD DATA INFILE等导入方法,不过它们主要用于...