Mise à jour d'une table MySQL avec des valeurs de l'autre

Je suis en train de mettre à jour une table MySQL basé sur les informations de l'autre.

Mon original tableau ressemble à:

id | value
------------
1  | hello
2  | fortune
3  | my
4  | old
5  | friend

Et la tobeupdated tableau ressemble à:

uniqueid | id | value
---------------------
1        |    | something
2        |    | anything
3        |    | old
4        |    | friend
5        |    | fortune

Je veux mettre à jour id dans tobeupdated avec le id de original basé sur value (les chaînes stockées dans VARCHAR(32) champ).

La mise à jour de la table de sera je l'espère ressembler à:

uniqueid | id | value
---------------------
1        |    | something
2        |    | anything
3        | 4  | old
4        | 5  | friend
5        | 2  | fortune

J'ai une requête qui fonctionne, mais c'est très lent:

UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value

Ce maxes mon CPU et conduit finalement à un délai d'attente avec seulement une fraction de la mise à jour (il y a plusieurs milliers de valeurs de la fonction en cours). Je sais correspondance par value sera lente, mais c'est les seules données que j'ai à faire correspondre ensemble.

Est-il un meilleur moyen de mettre à jour des valeurs de ce type? Je pourrais créer une troisième table pour les résultats de la fusion, si ce serait plus rapide?

J'ai essayé MySQL - Comment puis-je mettre à jour une table avec les valeurs d'une autre table?, mais il n'a pas vraiment aider. Des idées?

Merci par avance pour votre aide une base de données MySQL débutant!

  • Est-ce que votre "valeur" de la colonne ont un indice?
  • Salut noodl; non, value n'ont pas un indice pour le moment.
InformationsquelleAutor Superangel | 2011-04-20