dba-mysql大批量更新表,如何加快更新效率?

问题描述

mysql大批量更新表,如何加快更新效率?
本人设计一个项目,用到数据库大量更新操作:
update db_acc_traffic set state=1 where id=1
update db_acc_traffic set state=1 where id=2
update db_acc_traffic set state=1 where id=3
update db_acc_traffic set state=1 where id=11
其中id是主键,state是要修改的列,默认为0;现在要根据指定id修改s为1.
一次要处理上万条,一条一条执行的话效率很低。而且不支持事务,除了update外同时,另外一个线程会对db_acc_traffic进行大量insert操作。请问有什么办法提升更新效率??
求高手帮助,谢谢。

解决方案

用存储过程,存储过程处理大量数据优势很明显的;还有你的语句应该修改一下:
update db_acc_traffic set state=1 where in (12311)
如果你的id是连续的,则where id>0 and id<12
如果不是连续的,而且没有办法用数学公式处理的话,还是用存储过程,慢慢写吧

解决方案二:
如果你的id有一段是有规律的,而且累加数是有规律的用SQL应该可以解决一些的,如果没有的话,那可能就要一条一条的写在存储过程里了;你可以从网上下几本
数据库语法书看看,说不定里面有解决办法

时间: 2024-10-29 20:31:06

dba-mysql大批量更新表,如何加快更新效率?的相关文章

如何提高mysql大批量数据更新(update)的效率?

问题描述 如何提高mysql大批量数据更新(update)的效率? 本人所写的sql语句如下: UPDATE resulttmpSET result.forward_count=ROUND(tmp.fca_s) result.comment_count=ROUND(tmp.cca_s) result.like_count=ROUND(tmp.lca_s)WHERE result.uid=tmp.uid; 两个表的数据都达到了一百万条,该语句执行起来非常慢,故请问各位,如何提高update效率.

mysql update 根据表中字段查询另一张表更新更新

问题描述 mysql update 根据表中字段查询另一张表更新更新 mysql有两张表, 班级表class,包含 | id | name | | 1 | 一班 | | 2 | 二班 | 学生表student,其中classId为空,className有值并对应class表中的name | id | name | classId | className | | 1 | 一班 | | 一班 | | 2 | 二班 | | 二班 | | 3 | 一班 | | 一班 | | 4 | 二班 | | 二班

MySql多表关联Update更新sql语句

对单表执行更新没有什么好说的,无非就是update table_name set col1 = xx,col2 = yy where col = zz,主要就是where条件的设置.有时候更新某个表可能会涉及到多张数据表,例如:  代码如下 复制代码 update table_1 set score = score + 5 where uid in (select uid from table_2 where sid = 10); 其实update也可以用到left join.inner joi

mysql update 多表实例

  mysql update 多表实例讲解 我们先来看如下实例: 实例一: update tab1 set tab1.商品尺寸 = (select tab2.商品尺寸 from tab2 where tab2.商品颜色 = tab1.商品颜色) where tabl1.商品颜色 in (select tab2.商品颜色 from tab2) 继续如下实例: UPDATE CMS_Document A,CMS_Template B SET A.RuleType2=B.RuleType WHERE

数据库-关于原生mysql语句多表查询更新字段问题 求大神解答

问题描述 关于原生mysql语句多表查询更新字段问题 求大神解答 如题:a表user_id school_id1233 220132346 220172344 234452247 22017... ... b表user_id term2346 12346 12346 22247 21233 1... ... 如上两张表:根据a表中的school_id=22017 得到它的user_id 然后根据此user_id得到b表中的term 并把term=1的变为term=2,把term=2的变为term

MySQL查询结果复制到新表的方法(更新、插入)_Mysql

MySQL中可以将查询结果复制到另外的一张表中,复制的话通常有两种情况,一种是更新已有的数据,另一种是插入一条新记录.下面通过例子来说明.首先构建两个测试表. 表t1: 表t2: 1.如果t2表中存在score值,将score更新到t1表中.方法如下: UPDATE t1,t2 SET t1.score = t2.score WHERE t1.id = t2.id AND t2.score IS NOT NULL 这就是将查询结果作为条件更新另一张表,当然,t2也可以是更为复杂的一个查询结果而不

mysql 跨表查询、更新、删除示例_Mysql

下面来谈谈跨表插入,更新和删除 首先讨论的是跨表查询: insert into `table_A` select * from `table_B`;注意*代表全部插入. 接着又讨论关于跨表更新 复制代码 代码如下: update `table_A`, `table_B` set `table_A`.`name` = `table_B`.`name` where `table_A`.`id` = `table_B`.`id`;

MySQL · 引擎特性 · 从节点可更新机制

背景 主从集群,指由一个主数据库实例和多个从数据库实例组成,其中主数据库实例提供读写功能支持,而从数据库不提供对外服务或只提供只读功能支持,但也有从数据库提供读写功能支持,下面就这几种集群架构做详细的解读,并就如何实现从节点可更新机制进行探讨. 主从集群概述 主从集群的实现方式主要有以下几种: 基于磁盘镜像的主备集群 基于Proxy中间件的主从(多主)集群 基于共享磁盘的主从集群 基于日志重放(物理日志或逻辑日志)的主从集群 一.基于磁盘镜像的主备集群 基于磁盘镜像的主备集群是最早出现的一种高可

mysql 有就插入没有就更新 on DUPLICATE key update批量更新

on DUPLICATE key update批量更新 mysql有个批量更新的方法,mssql则无此命令用法,mysql的这个方法可以用来批量更新,更为强大的是:如果参数已存在则更新,如果数据库里没有这个参数就插入新的. 举例 insert into xinhuazidian (a, b, c) VALUES ('aaa','bbb','lao8.org'),  ('aaa2','bbb2','m.lao8.org') on DUPLICATE key update b=VALUES(b),