Access: View erstellen
Rouven
- datenbank
0 King^Lully0 Rouven0 King^Lully0 Frank (no reg)0 Rouven
0 Vinzenz Mai0 Rouven
Hello,
ich schlage mich nach wie vor mit Microsoft Access herum und kämpfe gerade damit, dass ich eine Schleife habe, in der wiederholt ein SELECT-Statement mit unterschiedlichen Parametern ausgeführt wird. Das Problem ist, dass das Statement einen JOIN über 3 Tabellen jeweils 50.000-100.000 Datensätze vornimmt, was auch bei Index-Nutzung offenbar noch merklich lange dauert (merklich im Sinne von: Die Reportauswertung dauert etwas über eine Minute). Im Prinzip ist das nicht schlimm, aber ich denke mir die ganze Zeit, dass das auch besser gehen muss. Bei einer "richtigen" Datenbank würde ich dieses SQL-Statement in einen View überführen und - zumindest kenne ich DB2 so - das DBMS würde diesen View selbstständig aktuell halten, hätte aber bei unveränderter Datenlage bei der zweiten Abfrage das Ergebnis unmittelbar verfügbar. Access scheint mir nicht so intelligent zu sein, der Join ohne WHERE-Klausel dauert beim ersten wie beim zweiten Öffnen des Queries ca. 17 Sekunden.
Nun meine Frage: Kennt jemand eine Möglichkeit, Access zum Caching des Queries zu bewegen, bzw. gibt es eine andere Möglichkeit um an die Sache ranzugehen?
MfG
Rouven
Nun meine Frage: Kennt jemand eine Möglichkeit, Access zum Caching des Queries zu bewegen, bzw. gibt es eine andere Möglichkeit um an die Sache ranzugehen?
Access ist kein Datenserver, ich glaube Du stösst an die "natürlichen" Grenzen von MS Access.
Hello,
Access ist kein Datenserver, ich glaube Du stösst an die "natürlichen" Grenzen von MS Access.
...die Befürchtung schwebt wie eine Gewitterwolke über mir, ja...
MfG
Rouven
Access ist kein Datenserver, ich glaube Du stösst an die "natürlichen" Grenzen von MS Access.
...die Befürchtung schwebt wie eine Gewitterwolke über mir, ja...
Ich habe auch ein Progrämmchen, das nutzt MS Access-Dateien, sind die erst einmal 50-100MB gross, dann hört das Festplattenrödeln kaum auf.
Hi,
warum sattelst du nicht auf
oder
um? Die Compact Edition ist mehr oder weniger die "Engine" in Reinform zum Hosten in deiner Applikation. Wie sich das mit einem Access-Frontend verhält, weiss ich aber leider (noch) nicht.
Grüsse, Frank
Hello,
warum sattelst du nicht auf
[...] um? Die Compact Edition ist mehr oder weniger die "Engine" in Reinform zum Hosten in deiner Applikation. Wie sich das mit einem Access-Frontend verhält, weiss ich aber leider (noch) nicht.
weil Hosting oder alles andere leider keine Option sind, es sei denn, du hast eine DB für mich, die
a) nicht installiert werden muss und auch keine Komponenteninstallation (z.B. Java) erfordert
b) für die Nutzung in Unternehmen freigegeben ist
Der Kunde hat Access bereits auf dem Rechner, da bleibt mir nicht mehr viel entgegen zu setzen. Ich hatte HSQL-DB in Betracht gezogen, aber da scheitert es mal mindestens an der Installation von Java bzw. der fehlenden Oberflächentechnologie...
Und mittlerweile wäre es eh zu spät nochmal die Technik zu wechseln.
MfG
Rouven
Hallo,
dann lies dir vielleicht (auch wenn es womöglich zu spät ist) folgenden Artikel durch. :)
So long, Frank
Hello,
dann lies dir vielleicht (auch wenn es womöglich zu spät ist) folgenden Artikel durch. :)
also ich habe mir das Ding jetzt nochmal angeschaut - ist schon richtig, der war mir entfallen. Ich hatte zwar mal gelesen, dass es so etwas gibt, aber im Zuge der Express-Version vergessen, dass es da noch eine Sub-Variante gibt. Na ja, also zugegeben, es ist eine interessante Sache, die ich für zukünftige Anliegen im Hinterkopf behalten werde, aber für die aktuelle Lage bleibt es aus zeitlichen und Anforderungsgründen bei Access, zu meiner Freude oder meinem Leidwesen...
Trotzdem, nochmal danke für die Anregung.
MfG
Rouven
Hi Rouven,
ja, klaro. Kein Problem :) Machs gut und schönes Wochenende!!
Frank
Hallo Rouven,
Nun meine Frage: Kennt jemand eine Möglichkeit, Access zum Caching des Queries zu bewegen, bzw. gibt es eine andere Möglichkeit um an die Sache ranzugehen?
nein leider nicht, außer dem Tipp parametrisierte Abfragen zu verwenden, damit
die Jet-Engine wenigstens den Ausführungsplan speichern kann. Ich bezweifle
allerdings, dass Dir dies bei Deinen 17 Sekunden wirklich weiterhilft.
Freundliche Grüße
Vinzenz
Hello Vinzenz,
nein leider nicht, außer dem Tipp parametrisierte Abfragen zu verwenden, damit
die Jet-Engine wenigstens den Ausführungsplan speichern kann. Ich bezweifle
allerdings, dass Dir dies bei Deinen 17 Sekunden wirklich weiterhilft.
genau das habe ich vorhin ausprobiert und es scheint tatsächlich so zu sein, dass das ganze eher noch zu Lasten der Queries geht, Erstellung eines QueryDef-Objektes, Zuweisen der Parameter und anschließendes Öffnen das Recordsets ist also maximal genau so schnell, vielleicht sogar eher einen Tick langsamer als direktes Ausführen der SQL-Statements als Basis für ein Recordset.
Also wird der Kunde bei der Analyse etwas länger warten müssen...
MfG
Rouven