recherche

Maison  >  Questions et réponses  >  le corps du texte

Accélérez les requêtes Mysql lors des mises à jour par lots

Je dois mettre à jour un enregistrement comme

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

Près de 10 000 requêtes.

Ma table contient 1 00 000 enregistrements. Je dois mettre à jour 10 000 enregistrements. Cela prend plusieurs heures Comment puis-je l'accélérer. J'utilise INNODB

Tout moyen d’accélérer les choses.

P粉470645222P粉470645222321 Il y a quelques jours494

répondre à tous(1)je répondrai

  • P粉865900994

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

    Le moyen le plus efficace est d'insérer l'enregistrement dans une autre table et de le mettre à jour en l'utilisant, par exemple :

    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;

    Si la mise à jour elle-même est toujours lente, assurez-vous qu'abc dispose d'un index composite (rollno, pcode).

    répondre
    0
  • Annulerrépondre