Heim > Datenbank > MySQL-Tutorial > JOIN vs. WHERE-Klausel zum Filtern: Welche SQL-Abfrage ist schneller?

JOIN vs. WHERE-Klausel zum Filtern: Welche SQL-Abfrage ist schneller?

Susan Sarandon
Freigeben: 2024-12-28 19:55:14
Original
780 Leute haben es durchsucht

JOIN vs. WHERE Clause for Filtering: Which SQL Query is Faster?

Filterkriterien in SQL-Abfragen: Join vs. Where-Klausel

Beim Abfragen von Daten in SQL gibt es zwei gängige Ansätze zum Anwenden von Filterkriterien : die Join-Kriterien und die Where-Klausel. Entwickler kämpfen oft mit der Frage, welcher Ansatz effizienter ist.

Die Frage:

Welche SQL-Abfrage führt schneller aus: eine, die den Filter auf die Join-Kriterien anwendet oder zur Where-Klausel?

Analyse:

Betrachten Sie zwei Abfragen:

Abfrage 1 (Filter nach Join-Kriterien):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID
INNER JOIN TableB b ON x.TableBID = b.ID
WHERE a.ID = 1;
Nach dem Login kopieren

Abfrage 2 (Filter nach Where-Klausel):

SELECT *
FROM TableA a
INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = 1
INNER JOIN TableB b ON x.TableBID = b.ID;
Nach dem Login kopieren

Leistungsvergleich:

Empirisch zeigen Tests, dass die Die Where-Klausel ist etwas schneller als die Join-Kriterien. Dies ist kontraintuitiv, da man erwarten könnte, dass die Join-Kriterien die Ergebnismenge früher reduzieren.

Logische Konsistenz:

Berücksichtigen Sie neben der Leistung auch die logische Konsistenz jedes Ansatzes. Durch die Verwendung der Where-Klausel wird sichergestellt, dass die Operation auch dann gültig bleibt, wenn der Join durch einen Left Join ersetzt wird.

Empfohlener Ansatz:

Basierend auf Leistung und logischer Konsistenz Es wird generell empfohlen, Filterkriterien auf das Wo anzuwenden Klausel.

Beispiel:

Betrachten Sie die folgende Abfrage:

SELECT *
FROM TableA a
LEFT JOIN TableXRef x ON x.TableAID = a.ID AND a.ID = 1
LEFT JOIN TableB b ON x.TableBID = b.ID;
Nach dem Login kopieren

Diese Abfrage ist logisch fundiert und funktioniert genauso gut wie die entsprechende Abfrage mit der Filter auf dem Join Kriterien.

Schlussfolgerung:

Während die Join-Kriterien und die Where-Klausel vom Leistungsstandpunkt aus ähnlich funktionieren, ist die Where-Klausel logischerweise konsistenter und daher der bevorzugte Ansatz für die Anwendung Filterkriterien in SQL-Abfragen.

Das obige ist der detaillierte Inhalt vonJOIN vs. WHERE-Klausel zum Filtern: Welche SQL-Abfrage ist schneller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage