Optimiser les requêtes de jointure gauche : filtrer en premier ou filtrer en dernier ?
Dans l'analyse et le traitement des données, il est souvent nécessaire de filtrer les données d'un tableau avant d'effectuer une jointure gauche pour garantir que seules les lignes requises dans le tableau de gauche sont incluses dans le résultat de la jointure.
Description du problème
Supposons qu'il y ait deux tables, "Client" et "Entrée". Nous voulons effectuer une jointure gauche basée sur la colonne "Client", mais inclure uniquement la colonne "Catégorie" dans la "Table d'entrée" égale à 'D. 'entrée. Si vous appliquez le filtre à l'aide de la clause WHERE
après la jointure, les lignes correspondantes dans le tableau de gauche seront exclues.
Solution
Pour filtrer la table de gauche avant de la rejoindre, déplacez la condition de filtre vers la clause ON
de l'instruction de jointure de gauche. Cela garantit que les lignes du tableau de gauche sont filtrées avant d'être jointes au tableau de droite.
<code class="language-sql">SELECT c.Customer, c.State, e.Entry FROM Customer c LEFT JOIN Entry e ON c.Customer = e.Customer AND e.Category = 'D'</code>
Explication
Dans cette requête, la clause ON
contient une condition supplémentaire e.Category = 'D'
qui filtre la « table des entrées » en fonction de la colonne « catégorie ». Les lignes de la table Customers seront incluses dans la jointure uniquement s'il existe un client dans la table Customers qui correspond à la valeur de catégorie spécifiée.
Avantages
Filtrer la table de gauche avant de rejoindre garantit :
Conclusion
Avec cette technique, vous pouvez filtrer efficacement les données d'un tableau avant d'effectuer une jointure gauche. Cela garantit que les résultats de la connexion reflètent avec précision les exigences en matière de données requises pour la tâche d'analyse ou de traitement des données.
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!