为什么会这么慢....?(100分)

N

ncyht

Unregistered / Unconfirmed
GUEST, unregistred user!
两台电脑,一装Sybase服务器,其中有个表中有1万多条记录。
在另一台电脑上我用table1连接该表。打开。很快就打开拉。。。
用Provider1.dataset:=table1 ,clientdataset1.providername:=provider1
再clientdataset1.open ...天拉。。。这下足足等拉一分多钟。。。。
然后。我重新把clientdataset1的包大小由-1,改成9后, 再打开。这次很快就得拉。。。
但是用clientdataset1.locate 查找。。。同样又是等拉半天。。。。。
请问这是为什么啊。。。。。?。。。谢谢。。
 
我在c/s结构中遇到过这个问题,你所说的时间长的两种情况,都是clientdataset1将
数据库端的表数据全部取出的结果(locate方法先从数据库表取回所有数据再查找)
我的解决方法是在程序启动时将所有数据拉到客户端,程序启动慢点,用户还能忍受。
三层结构应用中有另外的解决方法,看看李维的书吧,我没有实践过,记不清了。
 
一定使用索引,使用Find方法查询。
 
在这种结构的数据库编程中应尽量避免使用LOCATE,应尽量使用SQL来定位记录。
 
同意楼上的,locate是把服务器的数据所有下载到本地再进行查找的!!
 
全部下载到本地当然慢啦,猪脑子!!!
 
尽量不用要LOCATE这样的方法啦,还有一般我都不用TABLE的,而改用QUERY,因为TABLE好象也是取全部数据的,很浪费资源
 
能用SQL 的还是用SQL 吧。还有如果想了解运行性能方面的。李维 老师的DELPHI 7 高效数据库程序设计,写得不错。
 

Similar threads

D
回复
0
查看
743
DelphiTeacher的专栏
D
D
回复
0
查看
688
DelphiTeacher的专栏
D
D
回复
0
查看
636
DelphiTeacher的专栏
D
S
回复
0
查看
695
SUNSTONE的Delphi笔记
S
S
回复
0
查看
724
SUNSTONE的Delphi笔记
S
顶部