怎样提高Query到DBGrid的显示速度(100分)

  • 主题发起人 主题发起人 wabb
  • 开始时间 开始时间
W

wabb

Unregistered / Unconfirmed
GUEST, unregistred user!
发现只要数量一多就会很慢,有什么好的方法可以解决?
有人说分页,我知道一次读一点数据会很快,但我显示的数据基本上都是在一个DBgrid上显示的。
我用的是DBISAM数据库。
 
游标改为服务器端试试
 
我用的是一个DBQuery来获取数据然后显示在DBGrid中
 
有没有CursorLocation属性?
 
使用Query的这两个属性:DisableControls,EnableControls,作用是不显示指针的移动情况,对速度有点影响。
 
我的Query没有CursorLocation属性
 
DisableControls,
EnableControls
 
由于使用DBISAM数据库,所以DisableControls,EnableControls,CursorLocation这些都没有。
 
刚才看了一下有这两个
DisableControls,
EnableControls

我现在是在写SQL这样写的:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from table where ');
SQL.Add(S);
Prepare;
DisableControls;
Active:=True;
EnableControls;
end;
比原来快了一点点,但还是不能达到理想的速度,还是很慢。还有什么方法吗?
 
分页,限制一次查询数据量,要求条件,最低是时间条件,
 
但总要统计出总数据显示出来啊,比如有1000条数据,我在Query中却只显示100条。
 
好像不是在DBGrid中显示的慢,而是在读取数据的时候慢
 
DBISAM数据库没玩过,不过应该在数据库中增加主索引和辅助索引能提升速度。
 
我的很快啊。
 
Delphiguanshui 你怎么做的啊
 
Delphiguanshui 有QQ吗?
 
你的数据集有没有指定AfterScroll事件?如果有的话,查询之前先AfterScroll := nil,查询完毕之后再指定。
 
没有写AfterScroll事件
 
我做了一个测试,窗口中就只有一个Query,一个Database,一个DBGrid,一个DBsource,
然后在Query中写上“select * from table where xid like '36%'”,也就是查询xid指定为36开头的所有数据,然后就点击Query的Active为True,这时候有近3秒的时间才显示出数据,而我读出的数据也就只有几十条。
我的字段共有52个,其中有一个是用来存图片的。
 
后退
顶部