Val*_*riy 5 delphi performance tclientdataset
我有问题使用Delphi TClientDataSet检索数据
代码与ADO:
ADOQuery1.SQL.Text:='SELECT * FROM Table1 WITH (NoLock)';
DataSource1.DataSet:=ADOQuery1;
DataSource1.DataSet.Open;
DataSource1.DataSet.Last;
使用纯ADO时,上面的代码在3-6秒内返回超过180k行.
与TClientDataSet相同的代码:
ADOQuery1.SQL.Text:='SELECT * FROM Table1 WITH (NoLock)';
CDS1.SetProvider(ADOQuery1);
DataSource1.DataSet:=CDS1;
DataSource1.DataSet.Open;
DataSource1.DataSet.Last;
以下代码返回相同数量的行(超过180k),但在3-4分钟内.
CDS有什么问题?它比使用ADO慢大约100倍.有可能解决它吗?
小智 -1
在加载数据之前尝试将 CDS1.LogChanges 属性设置为 False。这需要在代码中完成,因为它不是已发布的属性。
来自帮助文件:对于大型数据集,LogChanges 的值为 True 可能会严重影响应用程序的性能。
您可以在初始加载后将其打开。