ADO ACCESS GESCHWINDIGKEIT
-
Hallo!
Ich stelle gerade ein altes BCB5 Projekt schrittweise nach BDS2006 um.
Das Programm greift unteranderem auf einer Access-Datei mit 66000 Datensätzen (ca. 50 Tabellenspalten) zu und stellt den Inhalt in in einem DBGrid und diversen DBEdit's dar.
Früher habe ich für den Zugriff die Kadao-Komponenten verwendet.
Im alten BCB5-Programm dauert das Öffnen der DB wenige Sekunden.Im BDS2006-Projekt wollte ich nun auf die ADO-Komponenten umsteigen die ich vorher nicht hatte.
Das Öffnen der DB dauert über eine Minute, egal ob ich TADOTable, TADODataset oder TADOQuery benutze. Im Taskmanager wird ein Speicherbedarf von zeitweise 220 MB und eine Prozessorlast von 25-50% angezeigt.
Selbst das Beenden der Verbindung zur Datenbank dauert fast eine Minute.Ich habe ein neues Projekt erstellt, welches nur die notwendigsten Elemente enthält (ADO-Komponente, DBGrid)
Auch in diesem Miniprojekt ist der DB-Zugriff extrem langsam.
Ich habe leider keinen Vergleich, da ich die Komponenten früher nicht verwenden konnte.Sind die Komponenten wirklich so langsam oder läuft bei mir etwas falsch.
Beispielcode spare ich mir, ich habe nur die Komponenten auf das Formular gelegt, den Connectionstring definiert und die anzuzeigenden Tabellenspalten festgelegt.
Danke!
-
Meine Erfahrungen mit den ADO-Komponenten sind andere. Ich habe auch bei Tabellen mit 2,3 Mio DS keinerlei Geschwindigkeitsprobleme.
ABER:
Ich benutze noch BCB6 & MS-SQL-Server.Ich erinnere mich dunkel an Aussagen, daß Access bei > 10.000 DS je Tabelle unheimlich in die Knie gehen soll!?

-
Ich habe inzwischen die Kadao-Komponenten unter BDS2006 zum Laufen bekommen.
Damit wird die gleiche Accesstabelle, die mit TAdoQuery/TAdoDataset erst nach 69 Sekunden im DBGrid dargestellt wird innerhalb von etwa 2-3 Sekunden
angezeigt.Mangels anderer DB kann ich die ADO-Komponenten im Augenblick nicht weiter testen.
Aber diese Geschwindigkeit ist unterträglich niedrig.
-
Ich hatte das in der Vergangenheit auch. Durch die Änderung eines Parameters von ADO konnte das wieder behoben werden. Ich weiss nicht mehr, welcher, kann aus Zeitgründen derzeit nicht nachsehen, aber auf die Schnelle könnte es folgender sein:
Jet OLEDB:Don't Copy Locale on Compact=False;
-
Stell den Cursor mal auf Serverseitig.