Reduzierung der Join-Anzahl für optimierte Abfrageleistung
Bei der Datenbankoptimierung ist die Minimierung von Join-Vorgängen entscheidend, um die Abfragegeschwindigkeit zu verbessern. Dieses Prinzip schreibt vor, dass jeder Join den Abfrageaufwand vervielfacht und nicht nur erhöht. Um dieses Konzept zu veranschaulichen, gehen wir auf ein bestimmtes Problem ein und untersuchen eine alternative Lösung, die weniger Verknüpfungen verwendet.
Abfrage zum Zählen von Verknüpfungsergebnissen
Stellen Sie sich ein Szenario vor, in dem Sie Bedarf haben um die Anzahl der Zeilen zu zählen, die sich aus drei separaten Verknüpfungen ergeben:
Typischerweise umfasst der unkomplizierte Ansatz drei Unterabfragen, von denen jede einen Join und eine Zählung durchführt:
-- Subquery 1 SELECT COUNT(*) FROM album alb LEFT JOIN pays_album payalb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON" -- Subquery 2 SELECT COUNT(*) FROM album alb LEFT JOIN pers_album peralb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON" -- Subquery 3 SELECT COUNT(*) FROM album alb LEFT JOIN juron_album juralb USING ( idAlb ) WHERE alb.titreAlb = "LES CIGARES DU PHARAON"
Es ist jedoch möglich, mit einem einzigen das gleiche Ergebnis zu erzielen Abfrage:
SELECT alb.titreAlb AS "Titre", COUNT(DISTINCT payalb.idAlb, payalb.PrimaryKeyFields) AS "Pays", COUNT(DISTINCT peralb.idAlb, peralb.PrimaryKeyFields) AS "Personnages", COUNT(DISTINCT juralb.idAlb, juralb.PrimaryKeyFields) AS "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
Durch die Verwendung des Schlüsselworts DISTINCT wird die Auswirkung zusätzlicher Verknüpfungen auf die Anzahl negiert. Dieser Ansatz ahmt effektiv die ursprüngliche Idee der Minimierung von Verknüpfungen nach, obwohl sein Leistungsvorteil von einer optimalen Indexverfügbarkeit abhängt. Dennoch stellt es eine praktikable Alternative dar, die es wert ist, in Betracht gezogen zu werden.
Das obige ist der detaillierte Inhalt vonWie können wir die Abfrageleistung optimieren, indem wir die Anzahl der Joins reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!