Hallo,
hast Du schonmal probiert, was passiert, wenn Du mehrere Insert gleichzeitig absetzt?
Davon ausgehend, dass das in einer Schleife passiert:
Delphi-Quellcode:
with DM_User.SQLQueryTemp
do
begin
with SQL do
begin
Clear;
Add(sqltxt);
end;
ExecSQL(true);
end;
einmal in der Art ändern:
Delphi-Quellcode:
DM_User.SQLQueryTemp.Sql.Clear;
...
// irgendeine Schleife
with DM_User.SQLQueryTemp
do
begin
SQL.Add(sqltxt);
If SQL.Count
Mod 100 = 0
then begin
ExecSQL(true);
SQL.Clear;
end;
end;
...
// Ende der Schleife
// Hier nicht vergessen den Rest wegzuschreiben, wenn die Satzzahl nicht durch 100 zu teilen ist.
If DM_User.SQLQueryTemp.SQL.Count > 0
then DM_User.SQLQueryTemp.SQL.ExecSQL(true);
dann wird alle 100 Datensätze das Insert für diese Sätze abgesetzt. Bei der 100 kannst Du dann auch ausprobieren, ob eine größere oder kleinere Anzahl von Sätzen die Geschwindigkeit erhöht oder verringert.
Wie sieht der Indexaufbau der Tabelle aus, auch hier kann bei satzweisem Einfügen ein Laufzeitproblem auftreten, wenn die Pflege des Index zu kompiliziert wird. Eventuell auch den Index vor dem Import wegwerfen und nach dem Import neuerstellen, dies geht allerdings nur, wenn der Index nicht zur Doppeltenprüfung... benötigt wird.