mysql - 如何加快mysql主表多表更新速度

标签 mysql

这次我又遇到了另一个问题,我有一些表,其中table1是进程表,其中包含一些有用的信息,例如进程id,日期等,我需要做的是我必须更新process_id和process_date当序列号相同时,table1到table2,table3等,table1的大小最大大约50k,但其他表很大,如300k,700k行,我想加快更新速度,请告诉我是否有什么好的方法

到目前为止,我已经尝试过这样的方法,作为初学者,我也有点困惑,我可能是错的,可能有一些好方法......希望你们能理解我。

  update table2 t2,table1 t1 
  set 
    t2.process_id   = t1.process.id,
    t2.process_date = t1.process_date
  where 
    t1.serial = t2.serial 


  mysql> select count(*) from table1;
  +----------+
  | count(*) |
  +----------+
  |    27610 |
  +----------+
  1 row in set (0.13 sec)

  mysql> select count(*) from table2;
  +----------+
  | count(*) |
  +----------+
  |    321827 |
  +----------+
  1 row in set (0.18 sec)

最佳答案

用于链接表的列应该建立索引以提高性能:

CREATE INDEX table1_serial ON table1 (serial);
CREATE INDEX table2_serial ON table2 (serial);

当您尝试基于 WHERE t1.serial = t2.serial 更新表时,这将允许 MySQL 快速创建表之间的关系。

关于mysql - 如何加快mysql主表多表更新速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975002/

相关文章:

mysql 按 order by desc 不使用子查询获取最新记录

mysql - 使用 group by 优化 MySQL 范围查询

mysql - 完全 JOIN MySQL 查询返回空

PHP PDO DB 连接未知字符集

java - 无法使用 JPA 连接到 mysql 数据库(java 持久性)

java - 在发布到 phpmyadmin 时询问 asynctask

MySQL 双左连接返回与预期结果相反的结果

mysql:查找 mysql 列中的最短和最长值

Mysql 选择 4 个连接表的值

java - 在表单提交时,将行插入数据库时​​添加带有当前值的时间戳