Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Auswertung einer korrelierten Unterabfrage
DennisXX - Di 31.01.12 22:16
Titel: Auswertung einer korrelierten Unterabfrage
Hallo ncohmal !
Ich habe nochmal eine Frage zu einer korrelierenden bzw. synchronisierten Unterabfrage in SQL.
Grundsätzlich: Ich weiß, dass in SQL verschachtelte Unterabfrage immer von Innen nach außen bzw. von hinten nach vorne ausgewertet werden.
Wo mich das jetzt ein wenig verwirrt ist bei den korrleierenden Unterabfragen. Wie genau stellt sich dieser Sachverhalt dar, wenn bspw. zwei korrelierende Unterabfragen ineinander verschachtelt werden und somit die äußere korrelierende Unterabfrage eine innere korrelierende Unterabfrage einschließt (ich hoffe, es ist verständlich, worauf ich hinaus möchte...also einfach zwei ineinander verschachtelte Unterabfragen...aber eben keine normalen, sondern korrelierende bzw. synchronisierte, die so alleine wosich nicht vom DBMS ausgeführt wrden könnten).
Wie genau stellt sich hier die Auswertungsreihenfolge dar?
Nochmal besten Dank für die Hilfe !
Grüße
Dennis
Ralf Jansen - Di 31.01.12 23:20
Zitat: |
Wie genau stellt sich hier die Auswertungsreihenfolge dar? |
Wie es das macht hängt von der Datenbank, den Metadaten den aktuellen Statistiken etc. ab. Ob von vorne nach hinten, innen nach außen, rechts nach links oder was du dir auch immer ausdenkst ist der Datenbank letztlich schnuppe. SQL definiert welche Daten man haben will aber nicht wie die Datenbank vorgeht damit du die Daten erhältst. Der Optimizer einer Datenbank wird dein SQL in einer (mehr oder weniger) beliebigen Art und Weise umformen so das nach dessen Vorstellung die beste Ausführungsgeschwindigkeit erreicht wird. Du kannst nicht mal mit Sicherheit davon ausgehen das wenn du das SQL 2 mal nacheinander ausführst die selbe Methodik angewendet wird. Insofern gibt es keine echte Antwort auf deine Frage. Das was letztlich ausgeführt wird mag rein gar nichts mehr mit einer Unterabfrage zu tun haben sondern wurde von der Datenbank in einen äquivalenten flachen Join umgeformt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!