Rouven: Access: View erstellen

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

--
-------------------
When the only tool you've got is a hammer, all problems start to look like nails.
  1. 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.

    1. 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

      --
      -------------------
      Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends: commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. -- Larry OBrien and Bruce Eckel in Thinking in C#
      1. 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.

      2. Hi,

        warum sattelst du nicht auf

        • SQL Server 2005 Express

        oder

        • SQL Server 2005 Compact

        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

        1. 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

          --
          -------------------
          "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
          1. Hallo,

            dann lies dir vielleicht (auch wenn es womöglich zu spät ist) folgenden Artikel durch. :)

            So long, Frank

            1. 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

              --
              -------------------
              He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
              1. Hi Rouven,

                ja, klaro. Kein Problem :) Machs gut und schönes Wochenende!!

                Frank

  2. 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

    1. 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

      --
      -------------------
      Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"