none
Performanceverlust einer Aktualisierungsabfrage durch Verwendung einer Transaktion

    Frage

  • Ich habe eine Aktualisierungsabfrage, die im Rahmen einer komplexeren Operation (VBA) innerhalb einer Transaktion ausgeführt wird.

    Diese Abfrage verbraucht sehr viel Zeit (12min). Lasse ich die Transaktion außen herum weg, so benötigt sie nur noch (1sec).

     

    Die Aktualisierungsabfrage ist unspektakulär, sie verknüpft zwei in Beziehung stehende Tabellen (INNER JOIN), um ein Feld in einer Kindtabelle zu aktualisieren, wobie anhand der Elterntabelle gefiltert wird. Die verknüpften Felder sowie Felder auf denen noch gefiltert wird, sind passend inidiziert. Es werden auch keine speziellen VBA Funktionen oder Domänenaggregatfunktionen verwende, lediglich anhand eines konstanten Wertes gefiltert und nur ein konstanter Wert gesetzt.

    Die Datenmenge in den verknüpften Tabellen ist auch unauffällig, die Elterntabelle enthält 2 Datensätze während die Kindtabelle etwas über 50700 Datensätze enthält, von denen 50500 aktualisiert werden sollen.

     

    Die Datentabellen sind aus einer Access2000 mdb verknüpft . Das Problem läßt sich in Access 2003 als auch Access 2010 auf verschiedenen Systemen nachvollziehen. Ein vorheriges Komprimieren der Datenbank hilft an dieser Stelle nicht. Dies habe ich bereits geprüft.

     

    Kann mir jemand vielleicht einen Tipp geben, warum innerhalb der Transaktion ein derart dramatischer Einbruch bei der Laufzeit der Abfrage auftritt?

     

    Vielen Dank!

    Stefan

     

     

    Donnerstag, 24. Februar 2011 10:43

Antworten

  • Hallo,

    Ich habe eine Aktualisierungsabfrage, die im Rahmen einer komplexeren Operation (VBA) innerhalb einer Transaktion ausgeführt wird.

    Diese Abfrage verbraucht sehr viel Zeit (12min). Lasse ich die Transaktion außen herum weg, so benötigt sie nur noch (1sec).

    Kannst du sowohl den VBA-Aufruf als auch die Abfrage (SQL) mal zeigen?

    Gruss - Peter

    Sonntag, 20. März 2011 01:39
    Moderator