首页  >  问答  >  正文

批量更新时加速 Mysql 查询

我需要更新记录,例如

update table abc set marks='15' 
where rollno='432423' and pcode='ABC234';

近 10,000 个查询。

我的表有 1,00,000 条记录。 我需要更新 10,000 条记录。需要几个小时 我怎样才能加快速度。我正在使用 INNODB

任何加快速度的方法。

P粉470645222P粉470645222206 天前373

全部回复(1)我来回复

  • P粉865900994

    P粉8659009942024-03-28 10:54:25

    最有效的方法是将记录插入到另一个表中并使用它进行更新,例如:

    create table def like abc;
    # optionally drop unneeded columns: alter table def drop foo, drop bar;
    insert into def (marks, rollno, pcode) values
        ('15','432423','ABC234'),
        ('16','432424','DEF567'),
        ...
        ;
    update def join abc using (rollno,pcode)
        set abc.marks=def.marks;
    drop table def;

    如果更新本身仍然很慢,请确保 abc 在 (rollno, pcode) 上有复合索引。

    回复
    0
  • 取消回复