AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Outer Join

Ein Thema von Synollus · begonnen am 26. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
Seite 2 von 2     12   
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#11

Re: [SQL] Outer Join

  Alt 28. Dez 2009, 12:04
solche subquerys die du da benutzt sollte man immer versuchen zu vermeiden, dadurch wird der code einfach nur unnötig lang und u.u. auch unverständlich.

joins sind viel besser für solche sachen und btw sind sie kein hack, wo hast'n du den schmarn her?
Und es ist auch kein gefrickel wenn man weiß wie man die dinger benutzt
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: [SQL] Outer Join

  Alt 28. Dez 2009, 13:02
Das ist absoluter Blödsinn.

Ich habe nichts gegen Joins, aber erstmal sind lange Abfragen völlig ok. Zweitens ist der EXISTS-Operator sehr effizient und drittens führen viele Wege nach Rom.

Wenn die Tabelle2 für einen Datensatz in Tabelle1 mehrere Zeilen enthält, vergrößert sich das Ergebnis. Da ist die EXISTS-Methode wesentlich sinnvoller. Vermutlich würdet ihr in dem Fall dann noch ein SELECT DISTINCT verwendet, autsch!

Also ne ne, ich weiß nicht, eure eingeschränkte Sicht der Dinge ist schon ziemlich traurig.

PS: Mein Beispiel passt nicht 100% zum Ursprung, trotzdem ist ein OUTER JOIN hier genauso möglich wie der EXISTS-Operator. Für mich persönlich ist dann der EXISTS-Operator sinnvoller und übersichtlicher. Aber ich bin ja nur ein unwissender Idiot und Ihr die Helden dieser Welt. Also weiter frickeln...
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#13

Re: [SQL] Outer Join

  Alt 28. Dez 2009, 14:59
Dass der EXISTS-Operator an sich sehr effizient implementiert werden kann, ist sicher korrekt. Die Variante von omata hat aber den Nachteil, dass die Subquery abhängig ist von der äußeren Query, weshalb sie für jedes Ergebnistupel der äußeren Query einmal ausgeführt werden muss. Das ist der Grund, warum es sich normalerweise empfiehlt, abhängige Subqueries zu vermeiden.


Eine andere Subquery-Variante wäre übrigens die folgende:
SQL-Code:
select *
  from tabelle1
  where PK not in (select FK from tabelle2)
Diese dürfte von der Performance her dem Vorschlag von alzaimar entsprechen, weil DB-Intern ein Join draus wird. Wenn über PK und FK je ein Index existiert, kann dieser sehr effizient ausgeführt werden.

Ich persönlich finde die Subquery-Variante etwas übersichtlicher, aber das ist Geschmack- und Gewohnheitssache.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: [SQL] Outer Join

  Alt 28. Dez 2009, 18:31
Das mag alles sein, trotzdem habe ich schon öfters eine Geschwindigkeitssteigerung erreicht, durch den Einsatz des EXISTS-Operators. Der verwendete JOIN war einfach langsamer. Und das brachte bei MySQL, MSSQL und auch Firebird merkliche Verbesserungen. Ok, dass waren SQL-Statements, die eine DIN A4 Seite füllen, aber wie gesagt, der EXISTS-Operator sollte nicht vernachlässigt werden, er ist nunmal sehr effizient und auch sehr schnell.
Aber wie auch immer, macht doch was ihr wollt. Ignoriert bitte einfach, was ich schreibe...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz