Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Insert Optimierung

  Alt 2. Mär 2012, 18: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat