我有一個簡單的插入語句與3個數據字段。 Tag_ID不是主鍵,也不是自動增量, 時間戳,它將一個簡單的DateTime現在保存爲一個字符串和一個包含簡單分離計算的浮點值。改善MS SQL與拉撒路插入性能
sql服務器實際上是本地的,但後來它將在不在本地網絡中的另一臺機器上。現在我得到25.8秒爲10.000條目..我怎麼能改善呢?
我的代碼看起來是這樣的:
procedure TForm1.testMssql(Datensaetze: integer);
var
i: integer;
before,after,result: real;
begin
before := GetTickCount;
for i:= 0 to Datensaetze do
begin
try
query.DataBase := conn;
query.UsePrimaryKeyAsKey:=false;
query.SQL.Text := 'insert into speedTest(TagID,timestamp,Value) values(:tag_id,:timestamp, :value)';
query.Params.ParamByName('tag_id').AsInteger := i ;
query.Params.ParamByName('timestamp').AsString := DateTimeToStr(Now);
query.Params.ParamByName('value').AsFloat := ((i*2)/55);
query.ExecSQL;
SQLTransaction1.Commit;
except
on E: Exception do
ShowMessage(E.Message);
end;
end;
after := GetTickCount;
result := (after - before)/1000;
Memo1.Text := FloatToStr(result);
end;
想批處理的另一個原因是所有單個`commit`語句都會顯着降低速度。 – 2011-01-21 10:32:35