Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#21

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 09:45
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.
  Mit Zitat antworten Zitat