Einzelnen Beitrag anzeigen

Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#1

Insert optimieren

  Alt 16. Sep 2010, 10:27
Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos
Moin Dp
Ich hab folgendes Problem, ich hab hier ein Array mit 4*30000 Werten, und muss dass möglichst schnell in die Firebird Datenbank einspeisen. Momentan brauch ich für die 30k werte ungefähr 30 Sekunden (übers Netzwerk), und da dachte ich mir das kann man bestimmt noch optimieren, hier mal mein Code:

Delphi-Quellcode:
  Frm_Messung.ZConnection1.StartTransaction;
  with Frm_Messung.ZQuery2 do
    begin
      saving := true;
      for zt := 0 to round(Frm_Messung.Ch_Messung.BottomAxis.Maximum) do
        begin
          Params[0].AsInteger := tId;
          Params[1].AsInteger := zt;
          Params[2].AsFloat := arr_messwerte[tdim, zt, 0];
          Params[3].AsFloat := arr_messwerte[tdim, zt, 1];
          ExecSQL;
          frm_messung.pb_db.Position := frm_messung.pb_db.Position +1;
        end;
    end;
  (*try
  Frm_Messung.ZQuery2.ExecSQL;
  except
  Frm_Messung.ZConnection1.Rollback;
  end;*)

  Frm_Messung.ZConnection1.Commit;
Im Zquery2.Sql steht:
Code:
INSERT INTO Messwerte (ID_mess, Millisec, Messwert_Links, Messwert_Rechts, Winkel, Merker) VALUES (:id, :sec, :mel, :mer, :win, :mek);
wobei ich die Parameter alle im Query selber schon eingetragen hab.
Die Parameter win und mek sind noch nicht belegt kommt aber später noch.

Nun wäre halt die frage wo ich noch das eine oder andere Rädchen drehen könnte um das zu optimieren.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"

Geändert von mkinzler (16. Sep 2010 um 13:30 Uhr) Grund: Code-Tag durch Delphi-tag ersetzt
  Mit Zitat antworten Zitat