Performance bei Abfragen

07/12/2007 - 12:24 von Andreas Vogt | Report spam
Hallo NG,
habe folgenden Code der mir aus einer Tabelle Daten in 2 andere
Schaufelt:
Set DB = CurrentDbC
Set rs1 = DB.OpenRecordset("Select * from Ventilplatte1 Order By
ID_Ven, Datum DESC, Zeit DESC", dbOpenDynaset, dbSeeChanges)
IDalt = ""
i = 0
While Not rs1.EOF
IDNeu = rs1!Id_Ven
If IDNeu <> IDalt Then
Set rs = DB.OpenRecordset("Select ID_Ven From
tbl_Ventilplatte Where ID_Ven = " & rs1!Id_Ven, dbOpenDynaset)
If rs.EOF Then
DB.Execute "Insert into tbl_Ventilplatte (ID_Ven, Datum,
Zeit, Nummer, Status, Erfassungsdatum) Values (" & rs1!Id_Ven & ", '"
& rs1!Datum & "', '" & rs1!zeit & "', " & rs1!Nummer & ", 6, '" &
Now() & "')"
Else
DB.Execute "Update tbl_Ventilplatte_Daten set archiv True Where ID_Ven = " & rs1!Id_Ven
End If
rs.Close
IDalt = rs1!Id_Ven
End If
rs1.MoveNext
Wend

Bei ca. 14000 Datensàtzen in der Quell-Tabelle benötigt es ca. 15-20
Minuten für einen Durchlauf. Wo kann ich da noch Optimieren? Noch zur
Erklàrung wegen If IDNeu <> IDalt Then:
Es gibt doppelte Datensàtze, und es sollen nur die neuesten verwendet
werden, daher wird auch in der Datenquelle nach Datum DESC, Zeit DESC
Sortiert.

Gruß Andreas
 

Lesen sie die antworten

#1 Lorenz Hölscher
07/12/2007 - 12:49 | Warnen spam
Hallo Andreas,

der erste Kandidat für eine Beschleunigung ist ein DB.Openrecordset
(eine sehr sehr langsame Operation) innerhalb einer Schleife. Ich
verstehe, daß Du diesen Recordset direkt beim Öffnen filtern möchtest,
aber da mußt Du wohl mal ran.

tschö, Lorenz

http://www.cls-software.de/cls_soft...ccess.aspx

Ähnliche fragen