Re: join versus Unterabfrage
- From: "Gregor Stefka" <stefka@xxxxxxxxxxxxxxxxx>
- Date: Thu, 25 Oct 2007 19:21:34 +0200
"Antje Kaiser" <AntjeKaiser@xxxxxxxxxxxxxxxxxxxxxxxxx> schrieb im Newsbeitrag news:086B63C6-F5EF-49DB-BAC3-DBF55C77FCA5@xxxxxxxxxxxxxxxx
Hallo zusammen,
ich habe mal eine prinzipielle Frage:
Ist es grundsätzlich immer bessser (schneller) joins zu machen? Meine Frage
bezieht sich auf wirklich komplexe Sachen. Wenn ich zum Beispiel in einer
View einen Wert brauche, der in einer, über 5 Beziehungen zu erreichenden,
Tabelle steht, mich die Zwischentabellen aber garnicht interessieren ist dann
der Join immer noch schneller als wenn ich eine Unterabfrage mache (dabei
meine ich natürlich Unterabfrage genau so wie die Beziehungen voll über die
Primärschlüssel). Jedesmal, wenn ich eine komplexe View erstelle (bis zu 20
einbezogenen Tabellen) stell ich mir diese Frage wieder. Ähnlich ist es, wenn
ich aus einer Tabelle verschiedene Sätze in die View haben will, die gleiche
Tabelle also über mehrere Aliase mehrfach mit "einbeziehe". Die Verlockung in
solchen Fällen Unterabfragen zu machen ist schon sehr groß. Wie seht Ihr das,
was würdet Ihr empfehlen.
--
Gruß
Antje
Es gibt darauf keine pauschale Antwort. Wenn du aber Szenarien wie beschrieben abbilden willst, solltest du neben View mit join und subselect auch Stored Procs ins Auge fassen.
Damit hast du eine Möglichkeit (die ggf. auch schneller als Join oder Subselect ist) das Statement aufzuteilen.
In deinem Szenario wo man "über 5 Tabellen hinweg aus Tabelle 6 holen muss", macht z.B. folgendes Sinn:
hole "DatenXY" anhand von Daten1:
select ID= @nID2 from tbl2 where x=Daten1
select ID= @nID3 from tbl3 where tbl2ID=nID2
select ID= @nID4 from tbl4 where tbl2ID=nID3
usw...
Am Ende kannst du dann die eigentliche Abfrage machen mit select feld1,feld2,feld from tbl6 where xy=DatenXY. Das Resultset bestimmt nun die joins und nicht irgendwelche Abhängigkeiten zwischen 5 Tabellen.
hth
Gregor Stefka
.
- Prev by Date: Re: SQL-Statement gesucht
- Next by Date: Re: Arbeiten in Arbeitsgruppe statt Domäne
- Previous by thread: SQL-Statement gesucht
- Next by thread: Re: join versus Unterabfrage
- Index(es):
Relevant Pages
|