Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - SELECT (https://www.delphipraxis.net/39749-sql-select.html)

Quake 7. Feb 2005 13:02


SQL - SELECT
 
Welche Notation ist den bei verknüpften Tabellen zu bevorzugen?
SQL-Code:
select /* FeldListe */ from TABELLE1, TABELLE2 where TABELLE1.ID = TABELLE2.XX;
oder
SQL-Code:
select /* FeldListe */ from TABELLE1 join TABELLE2 on (TABELLE1.ID = TABELLE2.XX);
ciao

urs.liska 7. Feb 2005 13:22

Re: SQL - SELECT
 
So weit ich weiß, ist die zweite Form die "modernere" und "offiziellere".
Vom Ergebnis macht es keinen Unterschied.

Ich finde es übersichtlicher mit der zweiten Methode, weil man schön zwischen Joins und Sucheinschränkungen unterscheiden kann:
SQL-Code:
select /* FeldListe */ 
  from TABELLE1 
  join TABELLE2 
    on TABELLE1.ID = TABELLE2.XX
 where TABELLE2.YY > 2003;
Ob es performancemäßig einen Unterschied macht, weiß ich nicht, vielleicht entsteht ein unterschiedlicher Query-Plan (wäre allerdings eher unsinnig).

MfG
Urs

Quake 7. Feb 2005 13:30

Re: SQL - SELECT
 
In der IBConsole kann man sich den Query-Plan ja anguggen und da sieht man, daß die Pläne sich unterscheiden. Ich habe bis jetzt auch immer mit der JOIN-Variante gearbeitet aber jetzt muss ich eine SQL-Abfrage dynamisch erzeugen und da ist es einfacher die Variante ohne JOIN zu verwenden.
Oder könnte es sein, daß nicht jeder SQL-Server das JOIN versteht? (Währe in meinem Fall aber auch egal den Firebird kann dat.)

perle 7. Feb 2005 13:36

Re: SQL - SELECT
 
bei größeren Tabellen macht das einen uU sehr großen Performanceunterschied, denn bei Methode 1 (ohne Join) werden erstmal beide Ergebnisse der Selectabfragen durchgeführt und anschließend gegenseitig verglichen ob gleiche Elemente vorhanden sind.

Beim join wird direkt bei der Abfrage verglichen und die Gleichen Elemente zurückgegeben.

urs.liska 7. Feb 2005 13:42

Re: SQL - SELECT
 
Hmm, ich habe ein (einfaches) Beispiel mit IBExpert nachgestellt und zweimal den gleichen Plan bekommen...

MfG
Urs

P.S.@perle: Offenbar ist der Firebird-Optimizer da schlauer, er gibt auch bei der "WHERE"-Konstruktion den Join als Plan an.

Quake 7. Feb 2005 13:57

Re: SQL - SELECT
 
Dann versuche ich es mit den JOINs hinzubekommen.
Danke erstmal

ciao :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 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