Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Wann genau korrelierte Unterabfrage verwenden


Felix2000 - Mo 23.01.12 16:12
Titel: Wann genau korrelierte Unterabfrage verwenden
Hi Folks !

Ich stehe gerade vor der Frage, wann genau eine korrelierte Unterabfrage in einem DBMS wirklich einen Sinn macht und wann man eher zu einer nicht korrelierten Unterabfrage greifen sollte, also eine Unterabfrage, die man für sich auch alleine ausführen könnte.

Ich verstehe diese Grundsatzentscheidung ncoh nicht so ganz, wann wirklich mal die eine- oder die andere Unterabfragenart relevant sein könnte. Angeblich sollen die korrelierten Unterabfrage aus performancesicht nicht so toll sein, wie gesagt, dass habe ich mal gehört.

Greetz
Felix


Ralf Jansen - Mo 23.01.12 16:28

Zitat:
Ich stehe gerade vor der Frage, wann genau eine korrelierte Unterabfrage in einem DBMS wirklich einen Sinn macht


Abfragedauer eins SQL ist keine exakte Wissenschaft (außer du kennst alle relevanten Parameter des Zielsystems die man aber eigentlich nie kennen kann) als das man das eindeutig vorhersagen könnte. Erstmal solltest du die Version nehmen die sich von der Funktionalität am ehesten anbietet und dann wenn du in ein Performanceproblem läufst die Alternative(n) ausprobieren.


Felix2000 - Mo 23.01.12 16:41

Hallo Ralf !

Vielen Dank für die Antwort. Ich muss aber gestehen, dass ich jetzt genauso schlau bin, wie vorher...

Greetz
Felix


Ralf Jansen - Mo 23.01.12 16:52

Du hast auf eine allgemeine Frage eine genauso allgemeine Antwort bekommen. Mehr ist nicht wirklich möglich außer das jetzt jemand eine spezielles Beispiel angibt unter dem die eine Version schneller wahr als die anderer. Hilft dir aber überhaupt nicht weiter da die Wahrscheinlichkeit das dein konkretes Problem vergleichbar ist gegen 0 geht. Das einzige was dir hilft wäre die verschiedene Alternativen an einem konkreten Problem auszuprobieren und ein Gefühl dafür zu entwickeln was wann schneller sein könnte.