PDA

Vollständige Version anzeigen : Abfrage oder SQl-Statement


Sonja Reindl
02.10.2001, 16:24
Hallo Zusammen,

ich bin grad dabei eine DB von Access 2.0 auf Access97 zu konvertieren und überarbeiten, d.h. ich werde weniger konvertieren und mehr neu machen.
Nun eine grundsätzliche Frage, obwohl ich eigentlich nicht glaube, dass sie sich pauschal beantworten läßt.

Ist es besser jede Auswahlabfrage (als Datenherkunft für ein Formular) als Abfrage zu erstellen und abzuspeichern oder als Datenherkunft ein SQL-Statement anzugeben oder die Datenherkunft im Ereignis "beim öffnen" per VBA mit einem entsprechenden SQL-Befehl zu versorgen.
Letzteres hätte den Vorteil, dass in meiner Datenbank nicht hunderte " ;-)" von Abfragen gespeichert wären. Aber wie ist das dann mit dem Laufzeitverhalten?

Gibt es da irgendwelche Empfehlungen, oder wie handhabt Ihr das?

Danke für Eure Auskünfte
Sonja

Manuela Kulpa
02.10.2001, 16:47
<font face="Verdana" size="2">Hallo Sonja!

Als Alternative zu dynamischen Abfragen würde ich immer Abfragen vorziehen, die permanent in der lokalen DB gespeichert sind. Nachdem eine Abfrage einmal analysiert, kompiliert und gespeichert worden ist, kann die Jet die Anzahl der zur Ausführung der Abfrage erforderlichen Schritte sowie den Zeitbedarf erheblich reduzieren.

Im Vergleich zu dynamischen Abfragen führt die Engine zwar die gleichen Schritte aus, doch die Analyse des SQL-Syntax und die Kompilierung des SQL-Ausdrucks und die Bestimmung der Teile, die übernommen werden sollen sind nur einmal beim ersten Ausführen der gespeicherten Abfrage erforderlich.

Du kannst ja parametrisierte Abfragen verwenden und unter Angabe verschiedener Parameter wiederholt ausführen. Besonders C/S-Abfragen profitieren von diesem Konzept.

Der wichtigste Unterschied zwischen dynamischen und gespeicherten Abfragen besteht in ihren Speicheranforderungen. Während der Ausführung einer dynamischen Abfrage muss die Jet verschiedene Module laden, die für das Analysieren, Optimieren und Ausführen der Abfrage zuständig sind. Wenn du eine Abfrage dagegen für die Wiederverwendung speicherst, kann die Jet den kompilierten Zustand speichern, und das Laden der für die Analyse und Optimierung der Abfrage zuständigen Module entfällt.

Ich hoffe, dir ein klein wenig geholfen zu haben und wünsche dir einen schönen Feiertag</font>

Sonja Reindl
04.10.2001, 06:40
Hallo Manuela,

da sieht man mal wieder, wie man sich irren kann. Ich dachte, es wäre besser nicht soviele Abfragen abzuspeichern, weil dann die Datenbank halt nicht so groß ist, aber das mit der Syntaxprüfung und Kompilierung ist schon einleuchtend. Der Speicherbedarf einer DB ist sicher weniger dramatisch als ein mieses Laufzeitverhalten.

Aber um sicher zu gehen, daß wir uns richtig verstehen, Du meinst mit gespeicherten Abfragen schon auch, dass was ich unter der Registerkarte "Abfragen" finde und z.B. auch mit einem Abfrageassistenten erstellt habe.

Danke für Deine Erklärung
Sonja

Manuela Kulpa
04.10.2001, 06:44
<font face="Verdana" size="2">Ja Sonja, das meine ich :)!

Viele Grüße</font>

Sonja Reindl
04.10.2001, 06:48
Dann werd ich jetzt also weiter Abfragen entwerfen und abspeichern.

Danke
Sonja