紧急切磋,先付100分不够再加 adoquery1.sql.add('');adoquery1.open; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 adoquery1.close;adoquery1.sql.clear;adoquery1.sql.add('select xp from abc where code=''12345''');adoquery1.open; 对code建立索引可以有效提高检索速度 adoquery1.close;adoquery1.SQL.clear;adoquery1.sql.add('select xp from abc where code=''12345''');adoquery1.active:=true; 同一楼上的意见,我感觉不是检索的问题,因为毕竟纪录不是非常多,但是老兄在重新检索前没有把原来的sql.clear,这样无形中增加了检索的内容。所以返回比较费时,另外图片的数据量由比较大,这样的话如果网络本身的传输速度比较慢,当然就比较慢了。 回复 zjwpanhp(php) 照片才28k。 回复: fredfei(飞飞) code是关键字 回复: whw123(令狐冲) 肯定已将sql先clear,再新加条件。 我也试过类似的问题,二十多万条数据,用PB做的统计三秒多搞定,但用DELPHI的却十多秒 你的“adoquery1.execute;”处是不是有问题,ADOQuery有此方法吗?是不是ExecSQL?如果是的话再加上“adoquery1.active:=true;岂不是执行了两次Select语句? ado不可能那么慢,肯定有问题 1)先改正一个问题:用ADO需13秒多,用BDE约2秒但数据不能正确显示(dbimage,image都显示为空白),用PB约1秒且能正确显示。2)修正一个语句:adoquery1.execute应该是adoquery1.execsql.3)在执行adoquery1.execsql后,如不用adoquery1.active:=true,则不能从中读取如(adoquery1.FieldByName('xp') as TBlobField ).SaveToStream(ms);数据 execsql 是用来执行这些 insert, update, delete的语句的,没有结果返回的,要结果集就用 open就可以了。另外如果你在delphi中使用ado的话,记得adoconnection有很多参数可以调的,很影响性能的。其次,pb+sybase本来就是最佳搭配,不太好对比呦 回复: suvi():你对这些参数熟吗?能不能给我们解释解释!! 主要的调整参数是 CursorLocation和LockType,其它参数相MarshelOptions和MaxRecord都可以试着调整一下,详细叙述请参阅李维的《高效率数据库应用》和一本《asp 经典》 13分半,哥们,你的ADO一定是有问题了! with XXQuery dobegin Close; SQL.Clear; SQL.Add('...............'); Prepare; Open;end;...... 用Tadotable 控件试一试吧! 对code 加索引,或改为用存储过程,在数据库服务器端执行,这样速度会快一些 To: Nizvoo(瓦匠泥〓过好每一天) :我就是这么写得可没用.我用BDE联,速度是快了不少,但干即显示不出数据来(不管是用image,dbimage,还是另存为bmp文件,都没有用) 1.高版本的MDAC2.DataSet的CursorLocation设为clUseClient3.DataSet的CacheSize值为100~1000之间4.使用存储过程5.DataSet的LockType为BatchOptimistic或Optimistic,如果是纯浏览图片则设为ReadOnly效率会更加高 时间太长了吧?除非你用图象作为条件。我们不管是用两层还是三层,不管是用Sybase还是Oracle,数据差不多都有100万也不要那么长时间。要是两个那么大的表连立统计怎么办? 我用的是C/S结构,图片是用PB以OLE方法写入数据库,用PB还原没问题,但用Delphi就读不出来(报Bitmap image is not valiable). 问题并未解决,不过,我接下来用query代替adoquery,算是解决了这个问题.再等下去也没办法解决给分算了 ???use stored procedure [Error] Unit_user.pas(67): Incompatible types: 'String' and 'Boolean' Delphi技术方案体验之旅 (活动分帖) 郁闷好几天的问题,请帮忙看看 怎样取得键盘输入的字符? 请给解释一下TWebBrowserTitleChange的使用方法 数据应该如何入库?? 进入SQL Exploer后,选择ACCESS那个,会提示要求输用户名和密码 光纤网络问题,急 程序在另一台机子上为何不能运行? 得到文件名的方法? 我的程序大概框架是这样的 :在创建主窗口时,创建登录窗口,登录只是关闭登录窗口,接着往下运行 紧急,紧急!!大家来看看
adoquery1.sql.clear;
adoquery1.sql.add('select xp from abc where code=''12345''');
adoquery1.open;
adoquery1.SQL.clear;
adoquery1.sql.add('select xp from abc where code=''12345''');
adoquery1.active:=true;
回复: fredfei(飞飞) code是关键字
回复: whw123(令狐冲) 肯定已将sql先clear,再新加条件。
2)修正一个语句:adoquery1.execute应该是adoquery1.execsql.
3)在执行adoquery1.execsql后,如不用adoquery1.active:=true,则不能从中读取如(adoquery1.FieldByName('xp') as TBlobField ).SaveToStream(ms);数据
begin
Close;
SQL.Clear;
SQL.Add('...............');
Prepare;
Open;
end;
......
我用BDE联,速度是快了不少,但干即显示不出数据来(不管是用image,dbimage,还是另存为bmp文件,都没有用)
2.DataSet的CursorLocation设为clUseClient
3.DataSet的CacheSize值为100~1000之间
4.使用存储过程
5.DataSet的LockType为BatchOptimistic或Optimistic,如果是纯浏览图片则设为ReadOnly效率会更加高
我们不管是用两层还是三层,不管是用Sybase还是Oracle,数据差不多都有100万也不要那么长时间。要是两个那么大的表连立统计怎么办?
再等下去也没办法解决给分算了
use stored procedure