我有问题使用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倍.有可能解决它吗?
我有简单的查询,它返回以下行:
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年里存在的任何解决方案?