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

时间:2014-07-26 19:55:00

标签: 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)

1 个答案:

答案 0 :(得分:2)

用于链接表的列应编入索引以提高性能:

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

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