2011-06-18 4 views
2

Simple question: D. Je sais comment le faire, mais je dois le faire rapidement.Mise à jour de la table croisée rapide avec MySQL

Quelle est la méthode la plus efficace?

Scénario: deux tables, tableA et tableB, mettre à jour tableA.columnA de tableB.columnB, sur la base tableA.primarykey = tableB.primarykey. Problème: tableA et tableB sont plus de 10.000.000 enregistrements chacun.

Répondre

8
update TableA as a 
    join TableB as b on 
     a.PrimaryKey = b.PrimaryKey 
set a.ColumnA = b.ColumnB 

Mise à jour 10 millions de lignes ne peut pas être rapide. Eh bien ... au moins en comparaison de la mise à jour d'une ligne.

Le mieux que vous pouvez faire:

  • index sur l'adhésion des champs, mais vous avez cela, car ces champs sont les clés primaires
  • limite par where état le cas échéant. Index couvrant où la condition est nécessaire pour l'accélérer.
+3

C'est à peu près _the_ réponse. Si ce n'est pas assez rapide pour vous, vous avez probablement besoin d'une meilleure indexation et/ou d'un matériel plus rapide. – Flimzy