Hallo,
Ich bin gerade dabei, einige Funktionen auf Geschwindigkeit zu optimieren. Es geht dabei um eine Datenbankanwendung und es wird TClientDataSet verwendet. Die Sache ist folgende:
Bisher wird bei jeder Datenzeile eine
GUID erzeugt (wird benötigt, da komm ich auch nicht drum rum), dann eine Datenbankabfrage gestartet und Detailinformationen ins CDS geschrieben. So, das blöde hier ist jetzt nur, dass das eben für z.B. 200 Zeilen in 200 Datenbankabfragen mündet - und wenn das Netz jetzt mal etwas ausgelastet ist, die Detailtabelle recht groß und so weiter summiert sich das recht hübsch! Ich ändere das jetzt dahin, dass über alle Zeilen die Abfrage erstellt wird. Das Problem dabei ist jetzt aber, dass nicht für jede Zeile ein
DB-Abfrage gemacht werden muss. Die Frage ist jetzt, mit welcher Methode ich am schnellsten den Datensatzzeiger innerhalb des CDS bewege bzw mit sichere. ein .Locate auf die
GUID ist mit Sicherheit das langsamste, einfaches setzen von RecNo über einen geklonten Cursor (
Delphi-Quellcode:
cursor.CloneCursor(OriginalCDS {, ...} );
{ ... }
cursor.RecNo := someValue;
cursor.FieldByName('field').Value := anotherValue;
) scheint mir theoretisch das schnellste.
Gibt es eine schnellere Möglichkeit?
Gruß