Hallo Forum.
ich habe (wie fast immer wenn ich poste) ein Geschwindigkeitsproblem.
Ich werte eine Tabelle mit rd. 80,000 Datensätzen aus. Ein Datensatz wird dabei über 3 Felder (Code, Datum, Integerfeld) identifiziert. Meine Auswertung:
- Je Feld (ohne Schlüssel)
- auf Basis einer aufsteigenden Sortierung
- je Monat
- 5 gleichgroße Abschnitte (Anzahl Datensätze)
- die Mediane jedes Abschnitts sowie den Gesamtmedian des Monats
Zunächst werden die Werte für einen Monat aufsteigend in ein Recordset geschrieben. Dabei werden Null und ein paar andere Feldwerte (Flags) ausgeschlossen. Auf dem Recordset werden dann die Mediane berechnet.
Diese Rst-Bildung dauert einen Lidschlag.
Jetzt muss ich ein weiteres Kriterium berücksichtigen. Dieses ist in einer zweiten Tabelle je Code (Teil des Schlüssels in Tab1) abgelegt. Nachdem ich das SQL Statement zur Bildung des Rst um das Kriterium und einen Inner Join auf Tab2 erweitert habe, Dauert die Ausführung 12sec(!!!).
Das alleine bedingt eine zusätzliche Durchlaufzeit von 5,5 std. Mein letzter Versuch war zunächst Recordsets der Basistabellen anzulegen und diese in SQL zu referenzieren. Klappt auch, dauert aber die angespr. 12sec.
Hat jemand eine Idee?
i: mir ist bewusst, dass ich die Datenstruktur der DB ändern könnte (Feld aus Tab2 in Tab1 packen). Dies würde aber zu Redundanzen führen. Und das will ich nicht.
i2: Das Kriterium aus Tab2 wird folgendermaßen abgefragt:
AND s.[ICB Sector Code] Not Like " & Chr(39) & „8*“ & Chr(39) & " " &
Führt die Einschränkung mit * vieleicht zur Verzögerung?
Greetz Dom