Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从主表加速mysql多表更新_Mysql - Fatal编程技术网

如何从主表加速mysql多表更新

如何从主表加速mysql多表更新,mysql,Mysql,这次我又遇到了另一个问题,我有一些表,其中表1是进程表,其中包含一些有用的信息,如进程id、日期等,我需要做的是,我必须将进程id和进程日期从表1更新到表2、表3等,当序列号相同时,表1的大小很小,最大大约50k,但是其他的表非常大,比如300k,700k行,我想加快更新速度,如果有什么好办法请告诉我 到目前为止,我已经尝试过这样做,作为一个初学者,我也有点困惑,我可能是错的,可能有一些好办法…希望你们能理解我 update table2 t2,table1 t1 set t

这次我又遇到了另一个问题,我有一些表,其中表1是进程表,其中包含一些有用的信息,如进程id、日期等,我需要做的是,我必须将进程id和进程日期从表1更新到表2、表3等,当序列号相同时,表1的大小很小,最大大约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);

这将允许MySQL在您尝试根据
更新表时快速创建表之间的关系,其中t1.serial=t2。serial

在两个表中都被索引了吗?这将为您节省大量时间。两个表中都有序列号列,先生,请告诉我解决方案