ADO的效率问题 -- by Fuweng(20分)

  • 主题发起人 主题发起人 Fuweng
  • 开始时间 开始时间
F

Fuweng

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!

前几天试用了一下ADO(我用的是C++Builder5,再不用就被历史淘汰了!),不知是
我自己没用好还是怎么回事,效率很低(极低!!),烦劳各位帮忙分析一下.

机器配置:(我的"老奔"到今年12月4日满4周岁)
Pentium 133, 联讯8561S主板(HX芯片组), 32M(EDO), 昆腾火球4.3G,
联讯DSV3365E(就是S3 765) ......
Pwin98第二版, Windows终极加速v2.6, C++Builder5企业版, Access97 ......
(用上述配置,执行以前用BDE写的程序,数据库是截止1997年哈尔滨市本地网所有
用户的电话号码信息库,可能不太全,共94万条记录,Access97数据库,加索引...
我的天!!! 一闪即过!!!!)

ADO的具体操作:
1.新建一工程,在Form上放一个ADOConnection控件,双击它.
2.在打开的对话框中单击Build... ,选择"Microsoft Jet 4.0 OLE DB Provider"
单击Next.
3.单击... ,选择数据库"c:/data/delphibbs.mdb" (大富翁离线包,比上面的数据库
小多了) 单击Test Connection, OK!
4.放置ADODataset控件到Form上,
Connection = ADOConnection1
CommandType = cmdTable
CommandText = letters
5.放置DataSource和DBGrid控件到Form上,
DataSource1->DataSet = ADODataSet1
DBGrid1->DataSource = DataSource1
6.测试一下,将表打开, ADODataSet1->Active = true
硬盘哗哗响,也不知在忙些什么,48秒后才将表打开!我的天!!!打开都这么费事,
其它就不用说了...... 而且系统资源耗费得很厉害,这样反复开关几次,都要
崩溃了!

此题应该不难,90%的可能是我用的不对,请大家帮助解决一下,谢谢!
 
哇!!!
这么可怜,没人回答!!
 
又要按cmdTABLE打开,又要DBGRID显示出来,就慢了。
只提取你要使用的数据即可,而且可以有很多属性设置优化。

数据库方面我不太熟悉,但这些建议想来可行。
 
原来还有这说道,我外行了,多谢wint!
 
我的机器也是P133没有你说的那么慢,提取全部数据也没有那么慢。
到练功场Down我修改左轻侯写的离线浏览器,有源码参照一下看慢不慢!
 
我用ado不是很慢。
 
你的方法没有错,试着用另外的ADO连接方式;
或者用ADOQuery,只取你需要的数据,减少数据I/0;
 
翻了一下以前的帖子,我的操作步骤没有错呀!本来也就这么几步吗!
在cAkk的"关于ADOExpress的性能评测报告"贴子中可以看出ADO要比
BDE等慢一些,但我这里慢得也太离谱了!用过ADO的大侠请说一说用
ADO操作Access和SQL Server时哪些地方应需优化,谢谢!
 
to 小刚:
我现在用的离线浏览器就是你改左轻侯的,很慢很慢!!不知什么原因!
 
几天没来了,一场大病,医生说是电脑综合怔,同志们,注意身体啊!
 
还没人回答,怎么回事?你们用ADO的时候效率还可以吗?
 
没有你说的那么慢
 
我用ADO改了我以前的程序,现在想来很后悔,同事经常说比改版前慢多了,其实也就三四
千条记录,比用BDE慢了一分20秒.

这也叫提高工作效率???
 
ado is slower than bde.That is true.
 
我这里慢得也太离谱了!
to 小刚:
你的浏览器在我这里确实很慢很慢!家里机器配置如上所述,单位的机器要好一些,
赛扬400,华硕P3B-F,128M......可是,快不了多少!
 
看见这个问题老不结束,实在忍不住手痒痒,就自己动手进行试验,
没想到又是3分钟搞定 :-),看来很easy呀!

关键问题在于CursorType,ADOConnection/Dataset/queyr/table缺省值都是clUseClient,
只要改成clUseServer,速度简直提高1000倍(对于离线数据库的letters),绝不比BDE慢,
CursorType具体说明看看help就可以了,虽然号称两种各有优劣,
但一般来讲用clUseServer应该是正确选择,没必要使用clUseClient。

所谓"水平",其实也就是这么回事...
 
我的天!我可怎么说我自己呀!!
 
接受答案了.
 
后退
顶部