FireDac阵列更新性能

时间:2018-03-15 08:42:01

标签: delphi firedac

尝试通过远程mysql连接使用批量更新方法更新10000条记录。我的服务器有200 + ms的延迟,使用这种方法,因为它一个接一个地发送查询所以需要永远这样做!任何解决方法?

query.params.arraysize := 10000;
query.sql.text := 'update table set field=:f1 where id=:f2;'
for i := 0 to query.params.arraysize-1 do
begin
query.params[0].asstrings[i] := 'VERY LONG STRING > 10KB';
query.params[1].asintegers[i] := id;
end;

query.execute(10000);

1 个答案:

答案 0 :(得分:0)

试试这个:

  1. 定义参数化查询
  2. 为其配置查询参数 性能
  3. e.g:

      

    FDQuery1.Params [0] .DataType:= ftString;

    1. 设置数组大小
    2. 插入参数
    3. 在交易中执行查询
    4.   

      FDConnection.StartTransaction;尝试
        FDQuery1.Execute(FDQuery1.Params.ArraySize); FDConnection.Commit;   除了FDConnection.Rollback;提高;端;