关于Adoquery的问题!(100分)

  • 主题发起人 主题发起人 yuanh23
  • 开始时间 开始时间
Y

yuanh23

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:我在form的create事件中加了以下两句代码:adostoreproc.execproc;adoquery1.open;其中adoquery1中的sql语句为
select cnf_name 会议名称,cnf_date 时间,role 大类,rel_name 小类 ,count(ex_number) 展商个数,sum(sz_countF) 收支金额
from temp3 group by cnf_name ,cnf_date, role ,rel_name ,其中temp3为一临时表。由一存储过程创建。
问题是:执行时间忽快忽慢,一会儿是3秒,一会儿是1分钟。但我在sql analyzer中执行则一直很快,大概也就是2秒钟。
我用的是ado连接方式,数据库是sql server.用delphi5.0开发。请问是怎么回事?
 
adoquery1.prepare;
adoquery1.open;
另外,设置cursurtype为forward only可以提高效率,如果不能fowordonly,可以用static
设置adostoredproc和adoquery为同步执行模式(sync)
 
thanx for your support :-)
 
Delphi的ADO封闭得不太好,尤其是记录集的两个参数默认设置是最没有效率的这两个参数
便是CacheSize和Prepare,你需要将CacheSize设置成100到1000为最快速度,然后将Prepare
设置成True.
 
各位大虾:以上两种方法我都已试过,但都没什么效果。用ADO方式依然是忽快忽慢,但用BDE
似乎比较稳定。不知谁还有更好的方法。速度实在是相差太多。3秒和1分钟!
 
同意ldbyj。
 
ADO有一属性maxrecords。设为0则把所有记录取出,可以设为20等具体数据。
bde则使用另外的方式
 
多人接受答案了。
 
后退
顶部