Heim > Web-Frontend > js-Tutorial > Hauptteil

Inline-View-Methode und die korrelierte Unterabfrage in SQL

Mary-Kate Olsen
Freigeben: 2024-10-04 14:23:02
Original
1008 Leute haben es durchsucht

Inline View Method and the Correlated Subquery in SQL

Lassen Sie uns in den Ausführungsablauf für beide Methoden eintauchen: die Inline View-Methode und die Corlated Subquery-Methode. Wenn Sie die schrittweise Ausführung dieser Abfragen verstehen, können Sie besser klären, wie SQL jedes Szenario verarbeitet, um das gewünschte Ergebnis zu erzielen.

  1. Ausführungsablauf der Inline-Ansichtsmethode

Die Inline-Ansichtsmethode verwendet eine Unterabfrage in der FROM-Klausel, um eine temporäre Ergebnismenge (Inline-Ansicht) zu erstellen und diese dann in der äußeren Abfrage zu verarbeiten.

Abfrage:

SELECT DepartmentId, MAX(Salary) AS HighestSalary
VON (
SELECT DepartmentId, Gehalt
VON Mitarbeiter
) AS InlineView
GRUPPE NACH Abteilungs-ID;

Ausführungsschritte:

  1. Innere Abfrageausführung (Inline-Ansicht):

Die innere Abfrage (SELECT DepartmentId, Salary FROM Employee) wird zuerst ausgeführt.

Es wählt die Spalten „DepartmentId“ und „Salary“ aus der Tabelle „Employee“ aus.

Dieser Schritt erstellt im Wesentlichen einen temporären Ergebnissatz (Inline-Ansicht), der alle Zeilen aus der Tabelle „Employee“ enthält, jedoch nur die Spalten „DepartmentId“ und „Salary“.

Beispielergebnis der inneren Abfrage:

  1. Äußere Abfrageausführung (Aggregation und Gruppierung):

Nachdem die Inline-Ansicht (temporäre Ergebnismenge) erstellt wurde, nimmt die äußere Abfrage diese Ergebnismenge und führt eine Aggregation mithilfe der Funktion MAX(Gehalt) durch.

Die GROUP BY DepartmentId stellt sicher, dass das maximale Gehalt für jede Abteilung berechnet wird.

Die äußere Abfrage durchsucht die Zeilen aus der Inline-Ansicht und gruppiert die Zeilen basierend auf DepartmentId. Anschließend wird das maximale Gehalt für jede Gruppe berechnet.

  1. Ergebnis zurückgeben:

Die Abfrage gibt das höchste Gehalt für jede Abteilung zurück.

Endergebnis:

Zusammenfassung des Ausführungsablaufs:

  1. Führen Sie die innere Abfrage aus, um die Inline-Ansicht zu erstellen.

  2. Die äußere Abfrage aggregiert (mit MAX) und gruppiert die Ergebnisse nach DepartmentId.

  3. Das Endergebnis zurückgeben.


  1. Ausführungsablauf der korrelierten Unterabfragemethode

Bei der korrelierten Unterabfragemethode wird die innere Unterabfrage für jede Zeile in der äußeren Abfrage ausgeführt, wodurch sie dynamischer, aber möglicherweise langsamer als die Inline-Ansichtsmethode ist.

Abfrage:

SELECT DepartmentId, EmployeeId, Salary AS HighestSalary
VON Mitarbeiter e
WO Gehalt = (
WÄHLEN SIE MAX(Gehalt)
VON Mitarbeiter
WHERE DepartmentId = e.DepartmentId
);

Ausführungsschritte:

  1. Äußere Abfrageausführung (zeilenweise Verarbeitung):

Die äußere Abfrage beginnt mit dem Lesen jeder Zeile aus der Employee-Tabelle.

Für jede Zeile in der Mitarbeitertabelle ruft die Abfrage die Abteilungs-ID, die Mitarbeiter-ID und das Gehalt ab.

Beispiel für die zeilenweise Verarbeitung aus der äußeren Abfrage:

  1. Ausführung der inneren Abfrage (korrelierte Unterabfrage):

Für jede Zeile aus der äußeren Abfrage wird die innere Abfrage (SELECT MAX(Salary) FROM Employee WHERE DepartmentId = e.DepartmentId) ausgeführt.

Die Unterabfrage berechnet das maximale Gehalt in der Abteilung, die der DepartmentId der aktuellen Zeile entspricht.

Die Korrelation zwischen der äußeren Abfrage und der Unterabfrage erfolgt über die DepartmentId-Bedingung (WHERE DepartmentId = e.DepartmentId).

Zum Beispiel:

Für die Zeile mit EmployeeId = 1 berechnet die Unterabfrage das maximale Gehalt für DepartmentId = 101, also 6000.

Für die Zeile mit EmployeeId = 3 berechnet die Unterabfrage das maximale Gehalt für DepartmentId = 102, also 7500.

Beispielausführung der Unterabfrage für jede Zeile:

  1. Zeilen filtern:

Nach der Berechnung des Höchstgehalts für die entsprechende DepartmentId vergleicht die äußere Abfrage das Gehalt der aktuellen Zeile mit dem von der Unterabfrage zurückgegebenen Höchstgehalt.

Wenn das Gehalt mit dem Höchstgehalt für die Abteilung übereinstimmt, wird die Zeile beibehalten.

Zeilen, die nicht übereinstimmen, werden herausgefiltert.

Zum Beispiel:

Die Zeile für EmployeeId = 2 wird beibehalten, da ihr Gehalt von 6000 dem Höchstgehalt in Abteilung 101 entspricht.

Die Zeile für EmployeeId = 1 wird herausgefiltert, da ihr Gehalt von 5000 unter dem Höchstgehalt in Abteilung 101 liegt.

  1. Ergebnis zurückgeben:

Die äußere Abfrage gibt die Zeilen zurück, in denen das Gehalt des Mitarbeiters mit dem Höchstgehalt seiner Abteilung übereinstimmt.

Endergebnis:

Zusammenfassung des Ausführungsablaufs:

  1. Führen Sie für jede Zeile in der äußeren Abfrage die innere korrelierte Unterabfrage aus.

  2. Die Unterabfrage berechnet das maximale Gehalt für die aktuelle DepartmentId.

  3. Vergleichen Sie das Gehalt des Mitarbeiters mit dem Ergebnis der Unterabfrage.

  4. Zeilen filtern und zurückgeben, in denen das Gehalt des Mitarbeiters dem Höchstgehalt seiner Abteilung entspricht.


Hauptunterschiede im Ausführungsablauf:


Leistungsaspekte:

Die Inline-View-Methode ist effizienter, wenn Sie nur am höchsten Gehalt für jede Abteilung interessiert sind, ohne detaillierte Mitarbeiterinformationen zu benötigen. Es führt die Aggregation in einem einzigen Durchgang über die Daten durch.

Die korrelierte Unterabfragemethode kann bei großen Datensätzen langsamer sein, da sie die Unterabfrage für jede Zeile in der äußeren Abfrage ausführt, was möglicherweise zu vielen redundanten Berechnungen führt. Es ermöglicht Ihnen jedoch, sowohl das höchste Gehalt der Abteilung als auch detaillierte Mitarbeiterinformationen (z. B. Mitarbeiter-ID, Name) abzurufen.

Das obige ist der detaillierte Inhalt vonInline-View-Methode und die korrelierte Unterabfrage in SQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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