为什么用DELPHI的ADO来查询SYBASE数据库的时候特别慢呀?

zmj1227 2004-11-22 09:32:02
诸位大虾,为什么用DELPHI的ADO来查询SYBASE数据库的时候特别慢呀? 代码是这样的:
adoquery1.active:=false;

adoquery1.sql.clear;

adoquery1.sql.add( 'select * from ') ;

adoquery1.sql.add(adoquery2tname.value); //表名

if edit1.text<>'' then

adoquery1.sql.add( ' where DATETIME>="'+edit1.text+' 00:00:00"')

else

adoquery1.sql.add( ' where DATETIME is null') ;

if edit2.text<>'' then

begin

adoquery1.sql.add( ' and DATETIME<="'+edit2.text+' 23:59:59"') ;

end;

if edit_area.text<>'' then

begin

adoquery1.sql.add( ' and left(Telephone,4)="'+edit_area.Text+'"') ;

end;

adoquery1.active:=true;



if edit_tel.text<>'' then

begin

adoquery1.sql.add( ' and Telephone="'+edit_tel.Text+'"') ;

end;



if edit_bz.text<>'' then

begin

if ansipos('QB',adoquery2tname.value)=1 then

adoquery1.sql.add( ' and QBFlag="'+edit_bz.Text+'"')

else

adoquery1.sql.add( ' and VCflag="'+edit_bz.Text+'"');



end;



adoquery1.active:=true;

lab_count.caption:= InttoStr(adoquery1.recordcount);

end;
...全文
115 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LouisCool 2004-11-25
  • 打赏
  • 举报
回复
有多少条记录啊?
如果只有上百条记录的话,你还是从别的地方找找原因吧.
劣势 2004-11-25
  • 打赏
  • 举报
回复
索引,
另外是否数据库历史数据过多?
SampsonDyh 2004-11-24
  • 打赏
  • 举报
回复
创建聚集索引

在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。聚集索引通常可加快SELECT、UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。
smiler007 2004-11-24
  • 打赏
  • 举报
回复
当然索引也是很重要的!
smiler007 2004-11-24
  • 打赏
  • 举报
回复
加大AdoQuery的CacheSize的值,加大到800至1000都行,默认值是1,太小了
zdq801104 2004-11-24
  • 打赏
  • 举报
回复
1、建索引
2、尽量少用 SELECT *
swei56 2004-11-24
  • 打赏
  • 举报
回复
少用select * from ,如果你要的字段很少,最好列出来
whythinkwhy 2004-11-24
  • 打赏
  • 举报
回复
不断在数据库和程序中进行切换操作,当然很慢了,可以考虑更改的程序逻辑了
jiaai 2004-11-22
  • 打赏
  • 举报
回复
ding
bee2518 2004-11-22
  • 打赏
  • 举报
回复
1建索引
2把“=”条件的放在WHERE的前面
3日期格式换一下,只对比日期就可以了

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧