Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   C# SELECT JOIN MIN richtig kombinieren? (https://www.delphipraxis.net/103490-select-join-min-richtig-kombinieren.html)

Jürgen Thomas 17. Nov 2007 18:18

Re: SELECT JOIN MIN richtig kombinieren?
 
Danke auch an Thorsten: das ist der vernünftige Weg für die Verknüpfung über JOIN.

Ergänzende Hinweise: StrVerz und PF-Verz sind smallint-Werte mit Inhalt 0/1/2, PLZ-Art sind int-Werte mit Inhalt 1...7. Damit alle Daten ausgelesen werden (siehe die Größenordnungen in meinem Beitrag #9), musste ich die Prüfung auf PLZ-Art in das SubSelect einfügen.

Der folgende Befehl ist jetzt meine endgültige Version (ergänzt um den zweiten JOIN und alle verwendeten Felder):
SQL-Code:
SELECT oa.Alort,
       Ort.Name_lang,
       Ort.Name_kurz,
       Ort.Zusatz,
       Ort.Zusatz_art,
       oa.Name_kurz as NAME,
       oa.Status,
       p1.PLZ,
       p1.Plz_art,
       p1.Strverz,
       p1.Pf_verz,
       Ort.Kgs
  FROM Orte2 oa
  INNER JOIN (SELECT PLZ, Alort, PLZ_Art, StrVerz, PF_Verz
                FROM PLZ p2
               WHERE PLZ = (SELECT MIN(PLZ)
                              FROM PLZ
                             WHERE Alort = p2.Alort AND PLZ_Art >= 6)
             ) p1
           ON p1.Alort = oa.Alort
  JOIN Ort ON Ort.Id = oa.Alort
Da dieser View immer wieder einmal ausgeführt werden soll, möchte ich es - soweit nötig - noch optimieren. Da ich auch mit Ausführungsplänen noch keine Erfahrung habe, bitte ich hier um Hilfe. IBExpert (danke auch an HK) liefert folgende Hinweise:
Zitat:

Plan:
PLAN (P1 PLZ ORDER PLZ_ALORT INDEX (PLZ_FK_ORT))
PLAN JOIN (OA INDEX (ORT_ALT_PK), ORT INDEX (ORT_PK), P1 P2 INDEX (PLZ_FK_ORT))

Adapted plan:
PLAN (P1 PLZ ORDER PLZ_ALORT INDEX (PLZ_FK_ORT)) PLAN JOIN (OA INDEX (ORT_ALT_PK), ORT INDEX (ORT_PK), P1 P2 INDEX (PLZ_FK_ORT))
Die genannten Indizes existieren alle bereits: PK sind PrimaryKey mit int-ID, FK sind ForeignKey auf entsprechende PKs. Mein Verständnis sagt, dass der Ausführungsplan optimiert ist. Stimmt das?

Wenn ich das SELECT als VIEW registriere: ist es sinnvoll/möglich/nötig, den "Adapted plan" per PLAN-Klausel hinzuzufügen?

Danke für diese weiteren Hinweise! Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz