现有个数据库中有500万条数据,需要从1到500w逐个编号,采用10000条记录提交一次,主要代码如下首先adodataset1的locktype设置成batchtoption;ADODataSet1.close;
ADODataSet1.CommandText:='select rowid,p_no from soc ';
ADODataSet1.open;ADODataSet1.First;
for i := 1 to ADODataSet1.RecordCount do
begin
ADODataSet1.Edit;
ADODataSet1.FieldValues['p_no']:=i;
ADODataSet1.post;
ProgressBar1.Position:=i; if (i mod 10000)= 0 then ADODataSet1.UpdateBatch(arAll);
ADODataSet1.next;
end;
ADODataSet1.UpdateBatch(arAll);
ShowMessage('done!');前50w条记录还比较快,1分钟10万条,但是后面越来越慢,十几分钟才能提交1万条,请问各位是不是代码有问题,要如何改进?
ADODataSet1.CommandText:='select rowid,p_no from soc ';
ADODataSet1.open;ADODataSet1.First;
for i := 1 to ADODataSet1.RecordCount do
begin
ADODataSet1.Edit;
ADODataSet1.FieldValues['p_no']:=i;
ADODataSet1.post;
ProgressBar1.Position:=i; if (i mod 10000)= 0 then ADODataSet1.UpdateBatch(arAll);
ADODataSet1.next;
end;
ADODataSet1.UpdateBatch(arAll);
ShowMessage('done!');前50w条记录还比较快,1分钟10万条,但是后面越来越慢,十几分钟才能提交1万条,请问各位是不是代码有问题,要如何改进?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货