Access内一张表中有6万多条记录,有什么办法可以在几秒钟把数据读到内存变量中 ( 积分: 50 )

  • 主题发起人 主题发起人 由由(love)
  • 开始时间 开始时间

由由(love)

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,解决后立即给分!
 
用clientdataset,使用无状态连接,
 
ZT答题宝?
 
如果是的话,以前倒是想过这个问题。

如果单纯追求速度的话,就直接写文件,把数据从ACCESS倒出来,放到自己定义一个结构的文件里面,然后作为资源文件包含进去,加载EXE的时候已经读进去了。然后检索的时候就在资源里面找。
这样做的话,就牺牲了维护的方便性,而且要做一个工具专门来倒ACCESS。
 
有人提过用虚拟内存,有人做过吗?
 
虚拟内存?---》虚拟内存是 用硬盘空间换内存空间哦,
说错吧?是虚拟磁盘,把ACCESS放到虚拟磁盘中,可惜现在虚拟磁盘跟硬盘比,没多大的速度优势。

什么样的表结构,可以公开吗?

我说的作成资源文件,EXE一加载,数据就已经在内存里面了,直接取就跟内存变量一样的速度。
 
用clientdataset吧,
ClientDataSet也是内存表
速度还可以
 
为什么要一次读取
你可以一次读出所有的主键到内存作为索引,这样会把时间放在关键计算上。
如果非要这样做,还是建议使用FB来存储数据
 
应该可以几秒搞掂的,多少条数据不是问题,问题是有多少兆数据,我的数据有16兆20万行,花了25秒,在低级线程中读入和转换,转换花了其中的6秒。
 
我替LZ回答一些问题吧:

来自:hxy2002, 时间:2007-5-9 14:53:26, ID:3712312
用clientdataset吧,
ClientDataSet也是内存表
速度还可以

数据在ACCESS里面,就是想倒如ClientDataSet,单纯建立个clientdataset没用的。

来自:anyway, 时间:2007-5-9 15:08:59, ID:3712337
为什么要一次读取
你可以一次读出所有的主键到内存作为索引,这样会把时间放在关键计算上。
如果非要这样做,还是建议使用FB来存储数据

有速度要求,在做搜索时最好是在内存里面读,如果搜索时在表里读,打开表时间来不及,而且会因为突然关闭会留下中间文件。执行程序经常被非正常关闭的。

来自:kinneng, 时间:2007-5-10 0:48:50, ID:3712638
应该可以几秒搞掂的,多少条数据不是问题,问题是有多少兆数据,我的数据有16兆20万行,花了25秒,在低级线程中读入和转换,转换花了其中的6秒。

你说的这种情况是前台没有其他大型软件在运行,LZ说的可能是前台有其他大型程序在运行,CPU时间已经被严重占用,硬盘灯一直亮的时候,倒东西特别慢,大概6M的表6W多条记录,要倒30~40秒,严重影响使用。有时间要求的,最理想是5秒钟内完成。

以上是猜的,等LZ来做详细解答吧。
 
从线程中打开数据库,基本上可以满足。
 
to jenhon
前台有大型程序的话,你随时可以转为高级线程,甚至是实时线程,跟它们抢时间,
不过怎么说都好,5秒是足够的,除非每行的数据太多。
 
来自:wzquan, 时间:2007-5-10 7:30:52, ID:3712658
从线程中打开数据库,基本上可以满足。

来自:kinneng, 时间:2007-5-10 7:56:05, ID:3712659
to jenhon
前台有大型程序的话,你随时可以转为高级线程,甚至是实时线程,跟它们抢时间,
不过怎么说都好,5秒是足够的,除非每行的数据太多。


谢谢2位作答,关乎问题的用途,我是猜的,得等楼主来详细说明的,我只是描述我碰到过的类试的情形,再次感谢2位无私奉献。

啊,线程,真是太复杂了,得等楼主来了,看看是不是这样的情况,再继续请教各位了。
 
后退
顶部