Heim  >  Fragen und Antworten  >  Hauptteil

Beschleunigen Sie MySQL-Abfragen bei Batch-Updates

Ich muss einen Datensatz wie

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

Fast 10.000 Anfragen.

Meine Tabelle enthält 1.00.000 Datensätze. Ich muss 10.000 Datensätze aktualisieren. Es dauert mehrere Stunden Wie kann ich es beschleunigen? Ich verwende INNODB

Irgendwelche Möglichkeiten, die Dinge zu beschleunigen.

P粉470645222P粉470645222206 Tage vor367

Antworte allen(1)Ich werde antworten

  • 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) 上有复合索引。

    Antwort
    0
  • StornierenAntwort