Hi,
ich habe eine leichte Verbesserung feststellen können. Ich habe nicht mehr für jeden Bookmark einzeln ein Update-Statement abgesetzt, sondern baue das gesamte Statement zuerst aus den Bookmarks zusammen (Oder-Verknüpfung) und schicke es dann ab.
Delphi-Quellcode:
...
with Query do begin
SQL.Add('
UPDATE position');
SQL.Add('
SET container_ID='+QuotedStr(ContID));
SQL.Add('
WHERE Position_ID='+QuotedStr(DataSet.Fields[0].AsString));
// Positionen ab dem 2. Bookmark zum Statement hinzufügen
for i:=1
to Grid.SelectedRows.Count-1
do begin
DataSet.GotoBookmark(pointer(Grid.SelectedRows.Items[i]));
SQL.Add('
OR Position_ID='+QuotedStr(DataSet.Fields[0].AsString));
end;
// for
execSQL;
...
Leider behebt diese Lösung das Problem nicht endgültig. Das Neupositionieren des Datensatzzeigers durch 'GotoBookmark' bleibt das Problem. Dieser Aufruf dauert ewig...
Wie kann ich Performace gewinnen, um das Update durchzuführen?