Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour efficacement une table MySQL en fonction des valeurs correspondantes dans une autre table ?
Mise à jour d'une table MySQL à partir d'une autre en fonction de la valeur
Vous souhaitez mettre à jour sans effort une table MySQL, « à mettre à jour », avec les valeurs d'une autre table , 'original', basé sur les chaînes correspondantes stockées dans un champ VARCHAR(32), 'value.'
Requêtes initiales et problèmes de performances
Au départ, vous avez essayé la requête suivante pour mettre à jour 'tobeupdated' :
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
Pendant que réussie, cette requête s'est avérée lente et n'a traité qu'une petite fraction du message souhaité. mises à jour.
Requête optimisée
Pour améliorer les performances, considérez la requête optimisée suivante :
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
Comprendre la requête optimisée
La syntaxe 'INNER JOIN' permet une récupération de données plus efficace en spécifiant explicitement la jointure état entre les deux tableaux. De plus, l'indexation des champs « tobeupdated.value » et « original.value » accélère considérablement le traitement.
Requête simplifiée
Pour une solution encore plus simple, vous pouvez utiliser l'outil Clause 'USING' :
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
'USING' simplifie une équi-jointure en faisant automatiquement correspondre les colonnes avec les même nom dans les deux tables. Dans ce cas, « à mettre à jour » et « original » ont tous deux une colonne « valeur ».
Considérations supplémentaires
Assurez-vous d'une couverture d'index adéquate sur les colonnes pertinentes pour optimiser les performances. Si les tableaux sont exceptionnellement volumineux, envisagez de créer un troisième tableau pour les résultats fusionnés, même si cela n'améliore pas nécessairement la vitesse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!