搜尋

首頁  >  問答  >  主體

批次更新時加速 Mysql 查詢

我需要更新記錄,例如

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

近 10,000 個查詢。

我的表有 1,00,000 筆記錄。 我需要更新 10,000 筆記錄。需要幾個小時 我怎樣才能加快速度。我正在使用 INNODB

任何加快速度的方法。

P粉470645222P粉470645222240 天前417

全部回覆(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
  • 取消回覆