我使用unidac组件。我对快速插入大约1000行有问题。
var
query: TUniquery;
begin
query.SQL.Add('INSERT INTO Table (field1,field2,field3) VALUES (:b0,:b1,:b2);');
for I := 0 to 1000 do
begin
Query.ParamByName('b0').AsInteger := 1;
Query.ParamByName('b1').AsInteger := 2;
Query.ParamByName('b2').AsInteger := Random(100);
Query.Prepare;
Query.Execute; //1000 times is very slow
end;
更快
var
query: TUniquery;
begin
for I := 0 to 1000 do
Query.SQL.Add('INSERT INTO Table (field1,field2,field3) VALUES (1,2,Random(100));');
end;
Query.Execute; //1 times - is fast add
end;
但是,我想在过程中使用第一种格式Query.ParamByName('b1'(.AsInteger:=2因为它更清晰,而且有大量的列,我发现自己更容易找到。
你对如何解决这个问题有什么想法吗?
也许您有其他方法可以快速插入具有不同数据的大量行?
如果需要快速插入大量记录,应该使用批更新。你可以在他们的博客中阅读更多关于使用UniDAC(或MyDAC(批量插入MySQL的信息