社区
网络通信/分布式开发
帖子详情
能否边查询,边显示?
lzg827
2010-01-07 09:16:03
我这边软件使用的是三层结构,大数据量查询的时候,效率不理想,并且“死机”,白屏。
我想实现的功能是将大数据量的查询分解为若干小的查询。用多线程进行。最后汇总为一个数据集。
目前基本功能已经实现,但有一点不足:全部数据装载到ClentdataSet后,才显示数据。
这个过程大概有几秒(数据量大的时候)。
既然已经是多线程查询了,能否边查询,边显示?
顶者有分啊
...全文
234
23
打赏
收藏
能否边查询,边显示?
我这边软件使用的是三层结构,大数据量查询的时候,效率不理想,并且“死机”,白屏。 我想实现的功能是将大数据量的查询分解为若干小的查询。用多线程进行。最后汇总为一个数据集。 目前基本功能已经实现,但有一点不足:全部数据装载到ClentdataSet后,才显示数据。 这个过程大概有几秒(数据量大的时候)。 既然已经是多线程查询了,能否边查询,边显示? 顶者有分啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
黄土大风
2011-01-13
打赏
举报
回复
猛然发现,我回复的这个贴子已经事隔一年了,
黄土大风
2011-01-13
打赏
举报
回复
总结:当gridView需要加载大数据量的记录时UI会因为等侍数据获取而死掉。
解决办法:另起一个线程用dataread填充dataTable 然后在主线程中设置数据源为这个dataTable。这样就实现了当数据量大的时候 数据像SQL2005一样一行一行的加载,就不至于UI死掉了。
annabellaip
2010-01-13
打赏
举报
回复
可以在循环中加入Application.ProcessMessages;
就像这样
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 999999 do
begin
Canvas.TextOut(10, 10, IntToStr(i));
Application.ProcessMessages;
end;
end;
譬如: 运行中你拖动窗体, 循环会暂停下来...
ahjoe
2010-01-13
打赏
举报
回复
不要太柯求,显示个“查询中,请稍等”吧,一般人还是等得了几秒钟的
wxsan
2010-01-13
打赏
举报
回复
数据查询,时间大致花在一下几点:
1、服务端查询时间;
2、数据传输时间;
3、客户端数据集装载时间;
首先,第二点:数据传输时间基本上受制于网络,除非你考虑压缩传输及其他高效方法,但基本上收效不大;
其次,服务端的查询时间,这个千万不要忽略,在大数据量情况下,查询设置尤其重要;举个例子:服务端
有个AdoQuery,只使用它进行查询而不更新数据,则可以进行以下设置,则速度可以成倍提高:
AdoQuery.CursorLocation := clUseServer;
AdoQuery.CursorType := ctOpenForwardOnly;
AdoQuery.LockType := ltReadOnly;
AdoQuery.EnableBCD := True;
再次,使用clientdataset数据集装载数据,如果数据量比较大,从数据转化为记录还是需要一定的时间的;
从上面3点可以看到,最好优化的就是服务端的查询,其他2点可能你费很大力气也很难提高多少的;
lzg827
2010-01-13
打赏
举报
回复
TO wxsan
大侠,你说的这几个设置后貌似效率有很大的不同。
能否详细讲讲这几个的意义,我找了很多地方都说的不明白。
另外,AdoQuery.CursorLocation := clUseServer; 这个我如果在两层中用,在第一次运行时,clUseServer比clUseClient反而慢很多,是为什么呢?
AdoQuery.CursorType := ctOpenForwardOnly; 是不是只能支持有主键的数据集?CursorType里面其他几个属性又是什么意思呢?
lzg827
2010-01-12
打赏
举报
回复
TO fenshm
你好,谢谢的关注
能否再详细点,特别是关于你说的“数据集控件”到底做什么样的事情。
最好来点例子和代码,o(∩_∩)o...
7年
2010-01-12
打赏
举报
回复
弄个进程条咋样
zxf52
2010-01-12
打赏
举报
回复
有2个办法,嘿嘿
1.就是捕获你向下滑动的消息,当你譬如点滚动轴的时候,这时候计算现在的id,后台用select top 100 where id > _id的方法。。。这样每次显示100个,每次要向下时,后台马上再取数据。。。
2.你分页显示,嘿嘿。每页就100条,就算100万条记录,你都很快,嘿嘿
lzg827
2010-01-11
打赏
举报
回复
兄弟们,汹涌乱入啊。
fenshm
2010-01-11
打赏
举报
回复
大量查询数据的时候
可以多取几个条件啊、像月份查询、分查询等。
还有都已经用3层了,建议写个数据集控件,功能数据承载能力都更强。(:
lzg827
2010-01-08
打赏
举报
回复
[Quote=引用 10 楼 luckyrandom 的回复:]
三层没玩过。。两层有异步,那就是你所需要的
[/Quote]
To luckyrandom
谢谢你的关注
能否再说详细点,即使是在两层里面。
Harryfin
2010-01-08
打赏
举报
回复
是通过packetrecords,试试具体效果怎样
Q315054403
2010-01-08
打赏
举报
回复
三层没玩过。。两层有异步,那就是你所需要的
dd_zhouqian
2010-01-08
打赏
举报
回复
是不是通过设置packetrecord来控制?
lzg827
2010-01-08
打赏
举报
回复
[Quote=引用 3 楼 huangheguyun 的回复:]
学习中
[/Quote]
Harryfin:
可否详细说说,来段代码看看。
kfcoffe
2010-01-08
打赏
举报
回复
mark
chdaner
2010-01-08
打赏
举报
回复
关注中
Harryfin
2010-01-08
打赏
举报
回复
“貌似增量获取数据的”改为“貌似可以增量获取数据的”
Harryfin
2010-01-08
打赏
举报
回复
clientdataset貌似增量获取数据的,这样就能满足你的需求了
加载更多回复(3)
汇通来电
显示
V2022
有了汇通来电
显示
盒,系统中您能
查询
到任何时间呼入呼出的电话,通话时长等。 4.随手记下的客户资料零零碎碎,散乱无章?有了汇通来电
显示
盒您就能有效的集中客户资料,再也无须担心人为的客户流失了。 5.公司有新...
C# winForm 中listview怎么
显示
数据
查询
结果?
//数据
查询
什么的我就不啰嗦了 for (int i = 0; i ; i++) { ListViewItem[] listViewItem = new ListViewItem[1]; listViewItem[0] = new ListViewItem(new string[] { dt.Rows[i]["名字字段"].ToString(), dt....
MySQL
查询
与高级
查询
(多表、嵌套和正则表达式)
============================================= 数据库管理系统的个最重要的功能就是数据
查询
,数据
查询
不应只是简单
查询
数据库中存储的数据,还应该根据需要对数据进行筛选,以及确定数据以什么样的格式
显示
。...
Jquery实现边输入边
查询
,仿百度,并可以选择
查询
的值赋到输入框
主
显示
页面bsbc.aspx,代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <title></title> ...
在PL/SQL Developer中怎样
显示
通过
查询
表返回的所有记录?
在使用PL/SQL Developer中有个地方不方便,有的时候只查到屏幕大小的数据,也就是说
查询
语句查出来的记录只能是满屏那么多行(默认一页
显示
多少行是自动检测的,就是
显示
数据行的网格窗口的高度能容纳的行数), ...
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章