Hallo,
mich hat es interessiert, wie sich die Geschwindigkeiten von
Inserts bei SQLite3 und Zeos
verändern, mit unterschiedlichen "schreibweisen"; Und habe festgestellt, dass es durchaus erhebliche Unterschiede geben kann.
Ich habe den Test mehrmals durchlaufen, auch mit unterschiedlichen Zahlen und habe folgende Durchschnittszeiten bekommen:
Hier die sortierte Ergebnisse:
Code:
Benötigte Zeit % Funktionsname
1,20 % Test4 (Insert; in Transaction, außerhalb der Funktion)
1,21 % Test3 (Insert; in Transaction innerhalb der Funktion)
97,58 % TEst1 (Insert und exec... direkt hintereinander)
(Funktion 2 hat im Test nicht teilgenommen. Ich war der Annahme, es ist auch mögliche mehrere Inserts mit add zu schreiben, doch das ist so nicht möglich.)
Hier die verschiedene Abschnitte:
Derzeit aktuelle Tabelle im Beitrag:
http://www.delphipraxis.net/1356490-post5.html
Delphi-Quellcode:
function test1(testzahl:integer): string;
var
a: integer;
begin
for a := 1 to testzahl do begin
Form1.ZQuery1.SQL.Text := 'Insert into daten2 (zahl) values (:zahl)';
Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
Form1.ZQuery1.ExecSQL;
end;
end;
function test2(testzahl:integer): string;
var
a: integer;
begin
Form1.ZQuery1.SQL.Clear;
for a := 1 to testzahl do begin
Form1.ZQuery1.SQL.add('Insert into daten2 (zahl) values (:zahl);');
Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
end;
Form1.ZQuery1.ExecSQL;
end;
function test3(testzahl:integer): string;
var
a: integer;
begin
Form1.ZQuery1.SQL.text := 'begin transaction;';
Form1.ZQuery1.ExecSQL;
Form1.ZQuery1.SQL.Text := '';
for a := 1 to testzahl do begin
Form1.ZQuery1.SQL.text := 'Insert into daten2 (zahl) values (:zahl);';
Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
Form1.ZQuery1.ExecSQL;
end;
Form1.ZQuery1.SQL.text := 'Commit;';
Form1.ZQuery1.ExecSQL;
end;
function test4(testzahl:integer): string;
var
a: integer;
begin
Form1.ZQuery1.SQL.Text := '';
for a := 1 to testzahl do begin
Form1.ZQuery1.SQL.text := 'Insert into daten2 (zahl) values (:zahl);';
Form1.ZQuery1.ParamByName('zahl').AsInteger := a;
Form1.ZQuery1.ExecSQL;
end;
end;
//START der Funktionen:
Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
test1(testzahl);
Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
test3(testzahl);
Form1.ZQuery1.SQL.Text := 'Delete from daten2'; Form1.ZQuery1.ExecSQL;
Form1.ZQuery1.SQL.text := 'begin transaction;'; Form1.ZQuery1.ExecSQL;
test4(testzahl);
Form1.ZQuery1.SQL.text := 'Commit;'; Form1.ZQuery1.ExecSQL;
LG
Monda<