Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

AW: Insert Optimierung

  Alt 2. Mär 2012, 17:33
Das ZQuery1.SQL.Text := 'INSERT INTO TestTabelle (Wert1, Wert2) VALUES(:v1, :v2)'; reicht doch einmal aus, also vor der Schleife.

Und du kannst mal probieren, ob eine Zusammenfassung mehrere Werte noch ein bissl was rausholen kannst.
Delphi-Quellcode:
ZQuery1.SQL.Text := 'INSERT INTO TestTabelle (Wert1, Wert2) VALUES (:v0, :v1), (:v2, :v3), (:v4, :v5), (:v6, :v7);';
...
with ZQuery1.Params do begin
  ParamValues[0] := SG1.Cells[0, i];
  ParamValues[1] := SG1.Cells[1, i];
  ParamValues[2] := SG1.Cells[0, i + 1];
  ParamValues[3] := SG1.Cells[1, i + 1];
  ParamValues[4] := SG1.Cells[0, i + 2];
  ParamValues[5] := SG1.Cells[1, i + 2];
  ParamValues[6] := SG1.Cells[0, i + 3];
  ParamValues[7] := SG1.Cells[1, i + 3];
end;
ZQuery1.ExecSQL;
Mit vielen kleinen Inserts, haben wir in Postgres, mit PgDAC, etwa 60 bis maximal 250 Datensätze rausbekommen.
Mit deaktivierten Triggern und soeinem zusammengefassten Insert sind wir schon auf über 600 DS/s gekommen.

Das liegt aber irgendwie am Delphi, denn in C# soll es wesentlich schneller gehn ... ich glaub da was von über 10.000 DS/s gehört zu haben.

Wenn dei DBMS sowas wie einen COPY-Befehl kennt, worüber man z.B. die Daten via einer CSV-Datei direkt in die Datenbank reinbekommt, dann wäre das wohl der schnellste Weg.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat