Naja, wir reden hier aber von einem Unterschied von 10 Minuten (
ADO) zu 4 Sekunden (DBX) bei ein und derselben Abfrage. Das ist schon erheblich.
Es sei denn du kannst mir verraten, wie man
ADO zu einer solcher Geschwindigkeit kriegt. Ich hab schon ein bisschen rumprobiert, z.B. CursoLocation auf clUseServer gesetzt, wodurch ich die Performance zwar verbessern konnte, was aber an anderer Stelle wieder zu Fehlern geführt hat, weil auf einmal RecordSets leer waren (die definitv nicht leer sein können). Im Großen und Ganzen weis ich aber nicht, was man da noch alles wie rauskitzeln kann.
Der Zugriff auf die Daten erfolgt im Prinzip wie folgt (beispielhaft):
Delphi-Quellcode:
procedure GetData;
var
DataSet: TADODataSet;
begin
// Verbindung aufbauen
{...}
DataSet.Open;
while not DataSet.Eof do
begin
// Daten lokal in Objekten speichern
{...}
DataSet.next;
end
end;
Die Datenübertragung vom Server zum Client ist dabei (clUseClient) in wenigen Sekunden beendet. Das Iterieren durch das Dataset braucht dann ewig (~10min).
Gleicher Code nur mit TSQLDataSet (also DBX) ist in ca. 4 Sekunden erledigt.
Also wenn es da was zu verbessern gäbe, würde das auch reichen