Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour efficacement une table MySQL avec les données d'une autre table à l'aide de JOIN ?

Comment puis-je mettre à jour efficacement une table MySQL avec les données d'une autre table à l'aide de JOIN ?

DDD
Libérer: 2025-01-03 21:00:39
original
368 Les gens l'ont consulté

How Can I Efficiently Update a MySQL Table with Data from Another Table Using JOINs?

Mettre à jour efficacement les tables MySQL avec les valeurs d'une autre table

Face à la nécessité de mettre à jour une table MySQL avec les informations d'une autre basée uniquement sur valeurs partagées, une approche courante consiste à utiliser un JOIN. Cependant, pour obtenir des performances optimales avec de telles requêtes, il faut y réfléchir attentivement.

Supposons que vous disposiez de deux tables avec les structures suivantes :

Original :

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

à mettre à jour :

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

Votre objectif est de mettre à jour la colonne id pour qu'elle soit mise à jour en fonction de la valeur correspondante dans l'original. Bien que la requête suivante puisse sembler simple :

UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Copier après la connexion

elle peut être extrêmement lente, en particulier avec de grandes tables. En effet, MySQL doit effectuer une analyse complète des tables sur les deux tables pour trouver les lignes correspondantes.

Optimisation des performances

Pour améliorer les performances, une approche plus efficace consiste à utiliser un JOIN avec une clause ON :

UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Copier après la connexion

En utilisant un INNER JOIN, MySQL ne prend en compte que les lignes correspondantes des deux tables. De plus, garantir que les index existent sur les colonnes de valeurs dans les deux tables peut réduire considérablement le temps requis pour la recherche.

Syntaxe simplifiée

Pour les requêtes avec des noms de clé identiques dans les deux tables, une clause USING peut être utilisée pour plus de simplicité :

UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
Copier après la connexion

Supplémentaire Considérations

  • Taille de la table : La taille des tables impliquées peut avoir un impact sur les performances. Pensez à optimiser la conception de la base de données ou à utiliser des techniques d'indexation pour améliorer les performances.
  • Cardinalité : La cardinalité (nombre de lignes correspondantes) entre les tables peut également affecter les performances. S'il existe de nombreuses lignes correspondantes, la requête peut prendre plus de temps.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal