Kann man nicht einfach ein paar hundert oder sogar tausend Update-Insert-Anweisungen in einem Rutsch sammeln und die dann auf einmal executen? Wenn ich so grosse Mengen auf einmal aktualisieren und/oder einfügen muss, geht das immer viel schneller. Man kann doch in die
SQL-Stringlisten einen Haufen Zeugs reinpacken, eigentlich bis der Speicher voll ist. Was da so aufhält, ist bestimmt das Execute 2000 Mal ausführen. Eigentlich sollte es auch reichen, das nur einmal auszuführen, 2000 Datensätze ist jetzt nicht die Welt.
Delphi-Quellcode:
Transaction.StartTransaction;
for i := 0
to 2000
do
begin
Query.SQL[i] := '
Update or insert into foo (A, B, C) values (:a, :b, :c)';
Query.ParamByName('
a').AsString := '
v1';
Query.ParamByName('
b').AsString := '
v2';
Query.ParamByName('
c').AsString := '
v3';
end;
Query.Execute;
Transaction.Commit;