3 Stimmen

Subquery VS join im Hinblick auf die Leistung

Was ist leistungsfähiger [Subquery] oder [join]?

Ich habe 3 Tabellen, die miteinander verbunden sind, und ich muss Daten aus einer Tabelle auswählen, die einige Felder hat, die mit den anderen 2 Tabellen verbunden sind, welche der folgenden 2 SQL-Anweisungen ist besser aus der Sicht der Leistung:

select Table1.City, Table1.State, Table2.Name, Table1.Code, Table3.ClassName 
from Table1 inner join Table2 on Table1.EmpId = Table2.Id inner join Table3
on Table1.ClassId = Table3.Id where Table.Active = 1

OR

select City, State, (select Name from Table2 where Id = Table1.EmpId) as Name, Code,
(select ClassName from Table3 where Id = Table1.ClassId) as ClassName from Table1
where Active = 1

Ich habe versucht, den Ausführungsplan, aber seine Statistiken ist nicht aussagekräftig für mich, weil die aktuellen Daten ist ein Test-Daten nicht real ein, so kann ich nicht vorstellen, die Menge der Daten, wenn Tabellen sind live natürlich sie mehr als die Test ein sein wird.

Hinweis: Das Feld Id in Tabelle2 und Tabelle3 ist ein Primärschlüssel.

Vielen Dank im Voraus

2voto

Ilya Saunkin Punkte 17444

Der erste Ansatz, mit Joins, ist bei weitem schneller. Bei der zweiten wird die Abfrage für jede Zeile ausgeführt. Einige Datenbanken optimieren jedoch verschachtelte Abfragen in Joins.

Join vs. Unterabfrage

0voto

RubbelDeCatc Punkte 708

Ich verwende häufig Unterabfragen, wenn ich große Joins mit großen Tabellen oder viele Joins erwarte.

Insbesondere bei Left-Joins kann es vorkommen, dass die Abfrage die Größe des Join-Caches überschreitet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X