Also, die ersten Schritte in SQLite und ein wenig Schock, INSERT ist sehr langsam. Ich füge in einer Schleife 600 Werte ein, das dauert ca. 5-6 Sekunden (Intel i7, Samsung SSD, also alles schnell genug).
Das kann ich nicht nachvollziehen. Bei mir dauert es ca. 2,5 Sekunden, wenn ich 6000 Werte einfüge:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
Field1, Field2: TField;
a: Cardinal;
begin
a := GetTickCount;
TestTable.Active := True;
for i := 1 to 6000 do
begin
TestTable.Append;
TestTable.FieldByName('FIELD2').AsString := 'Test' + IntToStr(i);
TestTable.Post;
ProgressBar1.Position := i;
end;
ShowMessage(IntToStr(GetTickCount - a));
end;
Und mit insert geht es mit 1,3 Sekunden sogar noch schneller:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
Field1, Field2: TField;
a: Cardinal;
begin
a := GetTickCount;
for i := 1 to 6000 do
begin
FDQuery1.Params[0].AsString := 'Test' + IntToStr(i);
FDQuery1.ExecSQL;
ProgressBar1.Position := i;
end;
ShowMessage(IntToStr(GetTickCount - a));
end;
Wobei die
SQL Anweisung so aussieht:
Code:
insert into Test (field2) values (:field2)
Weshalb das ganze bei dir so dermaßen viel langsamer ist, weiß ich nicht, vor allem, weil ich ja noch die Progressbar aktualisiere. Du benutzt ja auch FireDAC, oder?
Der betreffende PC ist etwas älter (Phenom II x4 955, Samsung 840 Evo, ...), daran liegt es also auch nicht.