J'essaie de mettre à jour une table MySQL en fonction des informations d'une autre.
Ma original
table ressemble à:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Et le tobeupdated
tableau ressemble à:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Je veux mettre à jour id
dans tobeupdated
la id
de original
base sur value
(chaînes stockées dans le VARCHAR(32)
terrain).
Espérons que le tableau mis à jour ressemblera à:
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 maximise mon processeur et conduit finalement à un délai d'expiration avec seulement une fraction des mises à jour effectuées (il y a plusieurs milliers de valeurs à faire correspondre). Je sais que la correspondance par value
sera lente, mais ce sont les seules données dont je dispose pour les faire correspondre.
Existe-t-il une meilleure façon de mettre à jour des valeurs comme celle-ci? Je pourrais créer une troisième table pour les résultats fusionnés, si ce serait plus rapide?
J'ai essayé MySQL - Comment puis-je mettre à jour une table avec des valeurs d'une autre table? , mais cela n'a pas vraiment aidé. Des idées?
Merci d'avance d'aider un novice MySQL!