Zitat von
hoika:
Hallo,
benutzt du denn jetzt das hier ?
Delphi-Quellcode:
var
TD:TTransactionDesc; (aus DBXpress)
begin
TD. // usw.
SQLConnection.StartTransaction(TD);
try
SQLConnection.ExecuteDirect('INSERT INTO ...');
SQLConnection.Commit(TD);
except
SQLConnection.Rollback(TD);
end;
end;
Genau das benutze ich, allerdings zunächst mal nur in einer einzigen großen Transaktion.
Das werde ich noch abändern. Pro Datensatz ist allerdings auch zu langsam.
Zitat von
hoika:
Du musst das mit den Parametern und der
Query hinbekommen.
Eine prepared
Query ist etwa doppelt so schnell wie das da oben.
Das würde ich gerne tun, aber mit SQLConnection.ExecuteDirect('INSERT INTO ...') habe ich doch gar keine Parameter zur Verfügung, oder?
Oder wäre es möglich, innerhalb von SQLConnection.StartTransaction und SQLConnection.Commit wieder auf SQLQuery-Methoden zurückzugreifen? (Mal abgesehen davon, dass die unbekannte Spalte angemeckert wird)
Zitat von
hoika:
Man könnte auch noch folgendes machen:
- je nach 500 Datensätzen Commit/StartTransaction
das habe ich auf jeden Fall vor
Zitat von
hoika:
- per Alter Index XXX Inactive alle nicht benötigten Indizes deaktivieren
Heiko
tja, leider habe ich schon alles soweit abgespeckt, dass nur noch ein PRIMARY KEY vorhanden ist, den ich auch brauche, weil mit doppelten Schlüsseln zu rechnen ist.
Leider hat das alles aber gar nichts damit zu tun, dass sich das System danach (!) völlig unzumutbar verhält.