J'essaie de mettre à jour une table MySQL à partir d'informations provenant d'une autre.
Mon original
ressemble à une table :
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Et le tobeupdated
ressemble à une table :
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Je veux mettre à jour id
sur tobeupdated
avec le id
de original
sur la base de value
(chaînes de caractères stockées dans VARCHAR(32)
).
Nous espérons que le tableau mis à jour ressemblera à ceci :
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
J'ai une requête qui fonctionne, mais elle est très lente :
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Cela fait tourner mon processeur à plein régime et finit par provoquer un dépassement de délai alors que seule une fraction des mises à jour est effectuée (il y a plusieurs milliers de valeurs à faire correspondre). Je sais que la correspondance par value
sera lent, mais c'est la seule donnée que j'ai pour les faire correspondre.
Existe-t-il un meilleur moyen de mettre à jour des valeurs de ce type ? Je pourrais créer une troisième table pour les résultats fusionnés, si cela est plus rapide ?
J'ai essayé MySQL - Comment mettre à jour une table avec les valeurs d'une autre table ? mais cela n'a pas vraiment aidé. Vous avez des idées ?
Merci d'avance d'aider un novice de MySQL !