Filterleistung: Join-Kriterien vs. WHERE-Klausel
Bei der Durchführung von SQL-Abfragen ist es üblich, Daten sowohl anhand der Join-Kriterien als auch der zu filtern WHERE-Klausel. Es stellt sich jedoch die Frage: Welcher Ansatz bietet eine bessere Leistung?
Bedenken Sie die folgenden zwei Abfragen:
Abfrage 1 (Filter auf Join)
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
Abfrage 2 (Filtern nach WO)
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
Intuitiv, Viele gehen davon aus, dass das Filtern nach den Join-Kriterien (Abfrage 1) schneller ist, weil es die Ergebnismenge früher reduziert. Empirische Tests zeigen jedoch ein überraschendes Ergebnis.
Leistungsergebnisse
Nachdem Tests mit einem Datensatz von 1000 Datensätzen in jeder Tabelle ausgeführt wurden, zeigten die Ergebnisse, dass Abfrage 2 (Filterung auf der WHERE-Klausel) war tatsächlich etwas schneller:
Filter Technique | Elapsed Time (ms) |
---|---|
Join Criteria (Query 1) | 143256 |
WHERE Clause (Query 2) | 143016 |
Logisch Überlegungen
Während die Leistung zwischen den beiden Ansätzen nahe beieinander liegt, gibt es logische Argumente, die für die Verwendung der WHERE-Klausel zum Filtern sprechen:
Schlussfolgerung
Während beide Filtertechniken ähnlich funktionieren, ist die Anwendung des Filters in der WHERE-Klausel geringfügig schneller und logisch konsistenter. Diese Technik bietet die gleiche Leistung und sorgt für Klarheit in der Abfrage.
Das obige ist der detaillierte Inhalt vonJOIN vs. WHERE-Klauselfilterung: Welcher SQL-Ansatz bietet eine bessere Leistung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!