Einzelnen Beitrag anzeigen

Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

SQLite - Insert / Update beschleunigen

  Alt 5. Jul 2011, 11:50
Datenbank: SQLite • Version: k.a. • Zugriff über: Zeos
Hallo, ich muss eine grössere Anzahl von Edit Feldern sichern & nutze dazu den nachfolgenden Code.
Das Ausführen dauert ~ 5 sec bei 60 Feldern.

Frage: Kann ich das ganze beschleunigen (sitzt z.B. StartTransaction, ... an der richtigen Stelle) ?

Delphi-Quellcode:
  for i := 0 to X do
  begin
    // Variablen füllen
    ...

    // Check vorhanden
    with Datenmodul.ZQuery1 do
    begin
      with SQL do
      begin
        clear;
        ParamCheck := true;
// Select
        Add('SELECT ID FROM T_TABELLE');
        Add('WHERE Feld = :Feld;');

        ParamByName('Feld').AsInteger := Variable;
      end;
      open;

      if RecordCount = 0 then
      begin
// Insert
        with SQL do
        begin
          clear;

          Add('INSERT INTO T_TABELLE');
          Add('(Feld1, Feld2, Feld3)');
          Add('VALUES');
          Add('(:Feld1, :Feld2, :Feld3);');

          ParamByName('Feld1').AsString := Variable1;
          ParamByName('Feld2').AsString := Variable2;
          ParamByName('Feld3').AsString := Variable3;
        end;
      end
      else begin
        ID := FieldByName('ID').AsInteger; // aus dem Select

// Update
        with SQL do
        begin
          clear;

          Add('UPDATE T_TABELLE');
          Add('SET');
          Add('Feld3 = :Feld3');
          Add('WHERE ID = :ID;');

          ParamByName('Feld3').AsString := Variable3;
          ParamByName('ID').AsInteger := ID;
        end;
      end;

      Datenmodul.ZConnection.StartTransaction;
      try
        ExecSQL;
      except
        Datenmodul.ZConnection.Rollback;
      end;
      Datenmodul.ZConnection.Commit;
    end; // Query

  end; // for

  Datenmodul.ZQuery1.close;
  Mit Zitat antworten Zitat