高手救我,为什麽查询的速度那麽慢?(100分)

  • 主题发起人 主题发起人 wang241
  • 开始时间 开始时间
我用一条简单的Locate,用Sql监视器发现BDE在后台干了惊天动地的大事.
 
个人意见:
1. z3没有必要使用trim,如果建库时z3使用Varchar就自动trim了(我不知
PARADOX是否有Varchar).
2. 李维的书上说他曾经做个实验,在数据库中新增加1000条数据
TTable TQuery
dbase 18.572s 6.275s
Paradox 3.825s 18.623s
Local InterBase 169.33s 177.63s

书上还说,TQuery的所有操作,其实都是由DBE解释执行的,因为文件型数据库不能
直接处理SQL语句.
 
首先多谢各位高人指点。
我要补充说明,服务器没问题,网络负荷也不很重。实际上我是在改我自己以前做
的一个小程序,3年前用FOXPRO 2.5 FOR DOS做的,*.FXP文件和DBF文件都放在这
台服务器上,网络结构也没有变动,用了这麽长时间都很稳定,只是现在客户端都是
WIN95/98了,让人不停的在WINDOWS和DOS之间切换,用户越来越有意见。
其实用FOXPRO查询这个7兆的数据库,速度快的令人不可思议,一敲回车马上显示结果画面,这其中还包括生成新窗口和刷新屏幕的时间。可把程序在WINDOWS下重新用DELPHI写过后就慢成这样,真令人寒心。
换用SQL SERVER或ORACLE等大型数据库的建议,在这里是不能接受的,就这麽一个简单的小问题也要专门为它安装一台数据库服务器,换了你做老板我想也不会同意的。
本来我的想法是在WINDOWS下重新写过后,连现在的服务器都可以省掉不用了,把库文件放在WIN95对等网中的一个共享磁盘上就可以了,可是,可是...唉...
各位行行好,救救我。一定有办法的,我不相信BORLAND的东西就这麽臭,难道还比不过MS几年前的FOXPRO!!!

 
哈哈,CJ 过年好啊。好久不见。 挺想你的呢。


wang241 , 建议你做如下测试:
把该库COPY到你的DELPHI程序的机器里。 做查询测试。 如果速度有很大提高的话。
那我看责任应该归于网络协议上。

顺便说一下。 我们公司旧有的软件曾经有100多M的PARADOX 。用WINDOWS WORKGROUP方式 ,使用DELPHI程序访问该表时,查询没问题。 麻烦的是索引矫正(也就是说在插入和删除,UPDATE操作时) 速度比较慢. 这种情况FOXPRO 也无法避免。 所以我总觉的问题不是出在BDE上。


再问一个问题, 在你上面的查询里用到了SQL。CLEAR
然后 PREPARE, OPEN
是否在这些操作之前 QUERY1是打开的,或是其他查询打开着该表。
如果是的话。 请你在SQL。CLEAR前 关闭掉其他查询。

 
各位好。
经过各位的启发和多次尝试,查询速度慢的问题现在已经解决,得出的结论是:
文件型数据库就要用文件型的查询方式,SQL在这里确实不好用。
现在我用以下方式:
table1.indexname:='index-z3';
table1.open;
table1.findkey([trim(edit1.text)]);
查询非常快,1-2秒显示新画面。
可是又有了新问题,我添加或删除数据后,索引没有同步更新,再查询就显示:
‘index is out of data,index:index-z3'

我查了半天,DELPHI里没有 table1.reindex之类的东西,这可如何是好?
各位好事做到底,再帮帮我。



 
查询之前删除索引后重建。
 
Table1.refresh will be OK.
 
接受答案了.
 
后退
顶部