Das obige Beispiel ist keine Co-related Sub-Query. Es ist eine abgeleitete Tabelle / Inline-Ansicht, da es sich um eine Unterabfrage innerhalb der FROM-Klausel handelt.
Eine verknüpfte Unterabfrage sollte darin auf ihre übergeordnete Tabelle (Hauptabfrage) verweisen. Siehe zum Beispiel:N. max. Gehalt nach Co-bezogener Unterabfrage finden:
SELECT Salary
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
FROM Employee E2
WHERE E1.salary <E2.Salary)
Zusammengehörige vs. verschachtelte Unterabfragen.
Technische Unterschiede zwischen normaler Unterabfrage und Co-bezogener Unterabfrage sind:
1. Schleife: Co-related sub-query loop unter main-query; während verschachtelt nicht; daher wird die zugehörige Unterabfrage bei jeder Iteration der Hauptabfrage ausgeführt. Während im Falle einer verschachtelten Abfrage; Die Unterabfrage wird zuerst ausgeführt, dann die äußere Abfrage als Nächstes. Daher die maximale Nr. der Ausführungen sind NXM für korrelierte Unterabfragen und N+M für Unterabfragen.
2. Abhängigkeit (von innen nach außen vs. von außen nach innen): Im Fall einer verwandten Unterabfrage hängt die innere Abfrage zur Verarbeitung von der äußeren Abfrage ab, während bei einer normalen Unterabfrage die äußere Abfrage von der inneren Abfrage abhängt.
3.Leistung: Die Verwendung von Co-bezogenen Unterabfragen verringert die Leistung, da sie NXM-Iterationen anstelle von N+M-Iterationen durchführt. ¨ Co-related Subquery Execution.
Weitere Informationen mit Beispielen:
http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-Sql-Sub-Queries-Nested-Co-related.html