小编Val*_*riy的帖子

TClientDataSet使用100K +行非常慢

我有问题使用Delphi TClientDataSet检索数据

代码与ADO:

ADOQuery1.SQL.Text:='SELECT * FROM Table1 WITH (NoLock)';
DataSource1.DataSet:=ADOQuery1;
DataSource1.DataSet.Open;
DataSource1.DataSet.Last;
Run Code Online (Sandbox Code Playgroud)

使用纯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;
Run Code Online (Sandbox Code Playgroud)

以下代码返回相同数量的行(超过180k),但在3-4分钟内.

CDS有什么问题?它比使用ADO慢大约100倍.有可能解决它吗?

delphi performance tclientdataset

5
推荐指数
1
解决办法
2786
查看次数

Delphi ADO:找到bug上的数据集过滤器

我有简单的查询,它返回以下行:

Name  Value
Peter   1
Peter   2
Peter   3
John    1
John    2
Run Code Online (Sandbox Code Playgroud)

应用过滤器:

 ADO.Filter := 'Name="John"';
 ADO.Filtered := True; // Now, its only 2 rows in dataset
 ADO.Locate('Value', 2); 
Run Code Online (Sandbox Code Playgroud)

光标应指向"John 2",但它指向"Peter 2"(由滤镜过滤掉).并且定位返回True.

尝试使用Delphi 7,Rad studio XE 6.看来这个错误是在过去的15年里存在的任何解决方案?

delphi ado filter locate

3
推荐指数
1
解决办法
4191
查看次数

标签 统计

delphi ×2

ado ×1

filter ×1

locate ×1

performance ×1

tclientdataset ×1