如何提高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效率。

解决方案

从语句上面似乎没有什么优化的余地 这个可能涉及到大量的锁争用 所以慢 这个查询列上面 建了索引 可以查起来快一点 再一个用innodb引擎

解决方案二:
提高数据更新效率(UPDATE/INSERT)
提高数据更新效率(UPDATE/INSERT)
提高MYSQL装载数据的效率

解决方案三:
先用explain分析一下时间花费在什么地方。

时间: 2024-11-03 17:31:02

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

如何提高MySQL数据分页效率

  本节的数据编辑插教程给我们简单介绍如何提高MySQL数据分页效率,下面我们将会给出的这段代码是大数据量时提高分页的效率的测试代码. 如果你也需要设置MySQL数据提高分页效率,那么,就一起来看看代码段吧! --提高分页效率:实现分页时只读取显示数据,需要先在数据库创建数据库"TestForPaging" use TestForPaging go --创建表SomeData create table SomeData ( id int primary key, name varcha

PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率

PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率 作者 digoal 日期 2016-10-18 标签 PostgreSQL , advisory lock , 高并发更新 背景 通常在数据库中最小粒度的锁是行锁,当一个事务正在更新某条记录时,另一个事务如果要更新同一条记录(或者申请这一条记录的锁),则必须等待锁释放. 通常持锁的时间需要保持到事务结束,也就是说,如果一个长事务持有了某条记录的锁,其他会话要持有这条记录的锁,可能要

解析mysql与Oracle update的区别

本篇文章是对mysql与Oracle update的区别进行了详细的分析介绍,需要的朋友参考下   update :单表的更新不用说了,两者一样,主要说说多表的更新 复制代码 代码如下:        Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标         update (         select t.charger_id_ new_charger_id_         from t_cus_year_status t

mysql mybatis 执行update 返回影响行数错误

问题描述 mysql mybatis 执行update 返回影响行数错误 文章内容在:http://www.oschina.net/question/1244507_250862 我就不再次编辑了 解决方案 kohana返回db影响的行数,mysql影响的行数(delete,update)----------------------

php中对用户信息进行更新执行mysql语句时update无法正确更新

问题描述 php中对用户信息进行更新执行mysql语句时update无法正确更新 这是代码 这个更新语句不知道有没有什么问题 第一个是打印出update的执行结果 是true 证明sql语句能运行,但是不知道是否能达到目的 数据库中的结果,没有更新成功,但是用户名变为了0,密码没有更变成功 请阁下帮忙分析指点一下 解决方案 update语字的格式里,多个字段更新是用逗号分隔,不是用AND进行连接. "update userinfo set username='$newusername', pas

mysql SELECT FOR UPDATE语句使用示例_Mysql

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式:SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行.而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同

mysql SELECT FOR UPDATE 语句用法详解

以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行.而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update

对象-Dbhelper save 和 update哪一个效率更高

问题描述 Dbhelper save 和 update哪一个效率更高 public void updateUser(int id, int time, String password) throws Exception { // 根据用户id查询用户 User user = getUser(id); // time==1,需要更新系统时间 if (time == 1) { user.setLast_vist_time(DateUtil.formatDate(new Date())); ; } /

PHP的MySQL的更新update

PHP的MySQL的更新update 在UPDATE语句是用来修改数据表中. 更新数据库中的数据 在UPDATE语句是用来更新现有的记录表中. 语法 UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value 注意:请注意WHERE子句在更新的语法. WHERE子句指定的记录或记录,应予以更新. 如果你忽略WHERE子句,所有记录将被更新! 若要了解更多有关SQL ,请访问我们的SQL教