请教高手:100分求解100万条记录的记录集处理方法

amin66 2000-08-27 05:10:00
请教高手:
我的一张表有大约100万条记录,存放在SQL Server中,客户端为VB,在客户端Form程序中使用了Adodc控件访问该表并使用datagrid控件显示,问题如下:
1. 每次打开Form是很慢,需要数分钟的时间, 如何提高Form的显示速度?
2. 如何在这样的记录集上快速查找记录?(将SQL语句传入SQL Server查找很快,因为在表上使用了索引,但在该记录集上使用.find查找也需要数分钟)

渴望关注! 致谢!!
...全文
355 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
netboy 2000-10-16
  • 打赏
  • 举报
回复
关注
秦岭刀客 2000-10-15
  • 打赏
  • 举报
回复
Grid控件太次,无法通过设置达到:显示时只提取一屏幕检索内容,翻页时再提取下一屏内容,这一点PowerBuilder就做得非常好,而且它可以在你查看第一屏幕的空闲时间里,将下一屏的内容调入Cache,所以非常快。
bluewater 2000-10-15
  • 打赏
  • 举报
回复
由自已编写一个HASH函数,我想是在存储的过程,根据记录的关键字带入HASH函数中计算出记录的存储位置,当然也要进行冲突处理。。用双散列函数要好一些。
ajiva 2000-10-15
  • 打赏
  • 举报
回复
可以用记录的标签功能,bookmark
重载滚动函数,增加减少bookmark
每次只显示标签后150个
liyang 2000-08-28
  • 打赏
  • 举报
回复
老大,我推荐您不要使用数据绑定的grid.这样,
首先,它打开记录集使用 adopenkeyset或adopendynamic游标,会把所有纪录填入grid.
不说你的系统资源有多少,这样,grid本身就会不稳定啦,
其次,你如果使用server端的游标,这些记录会在sql server中开tempdb以存放结果。
如果使用client端游标,一个会把这些记录通过网络调入本地,另外,客户端的系统资源也会受到影响
第三,你更改纪录后保存时,也会有延迟的。

我曾经使用过100多万的数据库,推荐你一个方法:

由于调入的纪录是给使用者看的。而屏幕再大,一次他也只能看到最多100条纪录。因此,你使用recordset对象,手工在grid中填入纪录,一次最多100条,然后,在grid的scroll事件中,添加代码,让他一向下滚动grid,就从数据库中调入另100条,直到到达最后一条纪录。因为不可能有人会看完100万条纪录,所以,资源以及速度均不用担心。不过,输入和更改纪录,你就要另作界面的。但是,我想,这样还是值得的。而且,有扩展余地。因为,当你的数据库再大,这个方法还是可以使用的。而用grid的绑定,当万一有一天,你的纪录达到某一个极限时,你的grid就要溢出啦。

gx_sunny 2000-08-28
  • 打赏
  • 举报
回复
同意ROBBER的意见!这个需要自己编写代码即可!
虎叔 2000-08-28
  • 打赏
  • 举报
回复
你需要自己编写代码就可以的了
amin66 2000-08-28
  • 打赏
  • 举报
回复
liyang你说的对,你说的方法我也曾想过,能否找到具有这一功能的控件?请网友们不吝赐教
lty 2000-08-27
  • 打赏
  • 举报
回复
这个记录集对vb来说是大了一些,不过一次调入的应该是越小的子集越好。另外窗体显示完了以后再连接数据也可以显得快一些。
  • 打赏
  • 举报
回复
用Splash窗体,这样就不会显出慢了,好像没有解决问题的说

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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