Un nombre d'une requête pour chaque optimisation de jointure
Dans l'optimisation de base de données, il est crucial de minimiser les jointures. Chaque jointure supplémentaire multiplie le coût de traitement, ce qui entraîne un calcul matriciel volumineux qui peut s'avérer difficile pour le moteur de base de données. Cependant, il est possible d'optimiser les requêtes en comptant avec une seule jointure.
Considérez la tâche consistant à compter le nombre de lignes résultant de jointures entre tables dans un scénario spécifique. Bien que l'utilisation de plusieurs sous-requêtes pour des jointures distinctes soit une approche simple, il vaut la peine d'explorer si une seule requête pourrait être plus efficace.
Pour y parvenir, les tables impliquées doivent avoir des clés uniques et le champ de jointure (par exemple, " idAlb ") doit être une clé unique pour la table primaire (par exemple, "album"). Ces conditions étant remplies, il est possible d'utiliser une version modifiée de la requête d'origine :
select alb.titreAlb as "Titre", count(distinct payalb.idAlb, payalb.PrimaryKeyFields) "Pays", count(distinct peralb.idAlb, peralb.PrimaryKeyFields) "Personnages", count(distinct juralb.idAlb, juralb.PrimaryKeyFields) "Jurons" from album alb left join pays_album payalb using ( idAlb ) left join pers_album peralb using ( idAlb ) left join juron_album juralb using ( idAlb ) where alb.titreAlb = "LES CIGARES DU PHARAON" group by alb.titreAlb
Dans cette requête, "PrimaryKeyFields" représente les champs de clé primaire des tables jointes. L'utilisation du mot-clé « distinct » élimine les décomptes en double et permet d'optimiser les coûts. Cependant, il est important de noter qu'en général, l'utilisation de « distinct » ne supprimera pas complètement les coûts associés aux jointures elles-mêmes.
Si des index optimaux couvrant les champs nécessaires sont en place, cette approche peut être aussi efficace que la solution de sous-requête. Cependant, dans la plupart des cas, il est probable qu'il soit moins efficace en raison de la nécessité pour le moteur de base de données de trouver la stratégie d'exécution optimale. Il est recommandé de tester et d'analyser les plans EXPLAIN pour les deux approches afin de déterminer la solution la plus optimale pour la configuration de la base de données et l'ensemble de données spécifiques.
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!