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 ?

Comment puis-je mettre à jour efficacement une table MySQL en fonction des valeurs correspondantes dans une autre table ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 12:14:38827parcourir

How Can I Efficiently Update a MySQL Table Based on Matching Values in Another 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn