Maison > base de données > tutoriel mysql > le corps du texte

Comment sélectionner efficacement les lignes du tableau A qui ne figurent pas dans le tableau B ?

Mary-Kate Olsen
Libérer: 2024-10-26 06:02:30
original
614 Les gens l'ont consulté

 How to Efficiently Select Rows from Table A that are Not in Table B?

Sélectionner efficacement les lignes du tableau A exclues du tableau B

Lorsqu'il s'agit de deux tables (A et B) partageant les mêmes clés primaires, une tâche courante consiste à extraire toutes les lignes présentes dans A mais pas dans B. Les solutions existantes, telles que l'utilisation de la clause "NOT EXISTS", peuvent présenter des problèmes de performances.

Pour améliorer l'efficacité, il est recommandé d'utiliser un approche de jointure à gauche. La syntaxe d'une solution basée sur la jointure gauche est la suivante :

SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
Copier après la connexion

Cette approche compare chaque ligne du tableau A avec sa ligne correspondante dans le tableau B en les joignant en fonction du champ commun "x" (en supposant ça existe). Les lignes du tableau A qui n'ont pas de ligne correspondante dans le tableau B seront renvoyées car la clause "WHERE" filtre les lignes où "B.y" est NULL, ce qui indique une correspondance manquante.

Alternativement, la syntaxe suivante peut être utilisé pour obtenir le même résultat :

SELECT A.*
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
Copier après la connexion

Cette syntaxe sélectionne explicitement uniquement les colonnes du tableau A, garantissant qu'aucune donnée inutile n'est récupérée.

En général, l'approche de jointure à gauche est un moyen plus efficace d'effectuer l'opération "sélectionner là où il n'est pas dans le tableau" par rapport à la clause "NOT EXISTS". Bien que l'amélioration spécifique des performances puisse varier en fonction de la taille et de la structure des données, la jointure gauche a tendance à surpasser l'alternative, en particulier lorsque le nombre de lignes du tableau B est nettement inférieur à celui du tableau A.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!