Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Left Join 30-fach langsamer wie where-Bedingung. Ist das normal? (https://www.delphipraxis.net/159503-sql-left-join-30-fach-langsamer-wie-where-bedingung-ist-das-normal.html)

juergen 31. Mär 2011 19:32

AW: SQL: Left Join 30-fach langsamer wie where-Bedingung. Ist das normal?
 
Hallo alzaimar,

danke, nun weiß ich Bescheid.
Mir war nichtb bewußt dass die Join-Verknüpfung pro Adressdatensatz ALLE Datensätze der Kontaktpersonen durchrattert (in meinem Fall ca. 5000 x 9000 = 45 Mio).
Müsste das bei der where -Bedingung nicht auch so sein (die n*n-Durchläufe)? Denn diese Abfrage ist ja sehr schnell.
Ich weiß mir fehlen Grundlagen, aber manchmal ist man gezwungen einfach zu handeln...:oops:

generic 31. Mär 2011 20:35

AW: SQL: Left Join 30-fach langsamer wie where-Bedingung. Ist das normal?
 
Zitat:

Zitat von juergen (Beitrag 1092273)
Sowas wie Optimizer oder SQL Ausführungspläne kenne ich für Pervasive nicht.

http://cs.pervasive.com/files/folder.../entry680.aspx

SQL query plan viewer

juergen 31. Mär 2011 21:34

AW: SQL: Left Join 30-fach langsamer wie where-Bedingung. Ist das normal?
 
Hallo generic,
sieht interessant aus! Danke. Seit Pervasive 10 ist dieses Tool inPervasive integriert.

jobo 1. Apr 2011 00:00

AW: SQL: Left Join 30-fach langsamer wie where-Bedingung. Ist das normal?
 
Zitat:

Müsste das bei der where -Bedingung nicht auch so sein (die n*n-Durchläufe)?
Diese Frage ist nicht unberechtigt. Aber Du brauchst im Zweifel nur den Ausführungsplan einzusehen.
Wenn er Dir nicht gefällt, musst Du Dich damit auseinandersetzen, wie Du den Optimizer auf die richtige Spur bringst. Das ist bei jedem DB Produkt unterschiedlich und natürlich bei jeder Abfrage. Und leider erscheint es (mir) nicht immer logisch, was der Optimizer plant.


Zitat:

Zitat von juergen (Beitrag 1092273)
Hallo zusammen,
--
- es gibt nur in der Tabelle Kontaktpersonen einen Index auf die Rec-ID der Tabelle AdressStamm.
..
- muss es denn in der Tabelle AdressStamm auch noch einen Index auf die Rec-ID der Tabelle Kontaktpersonen geben?

Das klingt etwas schräg.
Ein Index bezieht sich auf eine oder mehrere Spalten einer Tabelle.
Deine Beschreibung klingt etwas nach Foreign Key, der eine logische Beziehung zwischen 2 Tabellen definiert.

Idr hat man in den meisten Fällen einen Foreign Key, dessen Felder mit jeweils einem Index versehen sind.


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

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