Utilizar FireDac é lindo *-*
Comando comum
var
I: Integer;
TempoOld: Cardinal;
begin
FDQuery1.SQL.Text := 'insert into TabelaInsert (Id, Descricao) values(:Id, :Descricao)';
TempoOld := GetTickCount();
for I := 1 to 10000 do
begin
FDQuery1.Params[0].Value := I;
FDQuery1.Params[1].Value := 'Descrição - ' + i.ToString;
FDQuery1.ExecSQL();
end;
Edit1.Text := IntToStr(GetTickCount() - TempoOld);
end;
Comando com Array DML
var
I: Integer;
TempoOld: Cardinal;
begin
FDQuery1.SQL.Text := 'insert into TabelaInsert (Id, Descricao) values(:Id, :Descricao)';
FDQuery1.Params.ArraySize := 10000;
TempoOld := GetTickCount();
for I := 0 to FDQuery1.Params.ArraySize do
begin
FDQuery1.Params[0].AsIntegers[I - 1] := I;
FDQuery1.Params[1].AsStrings[I - 1] := 'Descrição - ' + IntToStr(I);
end;
FDQuery1.Execute(FDQuery1.Params.ArraySize);
Edit2.Text := IntToStr(GetTickCount() - TempoOld);
end;