高分求救!!!如何缩短我程序中access数据库的操作时间?it's too long!!10seconds!!(200分)

  • 主题发起人 山水之间
  • 开始时间

山水之间

Unregistered / Unconfirmed
GUEST, unregistred user!
各位专家:
小弟在这求教了!
我用delphi的bde引擎链接access数据库,在程序中完成这样的功能:
1、每10秒钟读取由底层通信系统传来的数据(我把它放在access数据库中,两个表,18个数据),对这些数据进行计算求解其它参数
2、将每10秒的数据存入数据库(5个表,每个表为17个字段),并作图显示动态曲线。(保持数据库记录数不变,然后每次通过记录尾加数据,并删除第一条数据实现)
3、每5分钟读取10秒的数据库进行平均统计,求出平均值,写入数据库(5个表,每个表为17个字段)
4、每一小时读取5分钟的数据库进行平均统计,求出平均值,写入数据库(每个表记录数:1000条)
5、每8小时读取1小时的数据库进行平均统计,求出平均值,写入数据库(每个表记录数:10000条)
6、每天读取1小时的数据库进行平均统计,求出平均值,写入数据库
7、每月读取1小时的数据库进行平均统计,求出平均值,写入数据库
以上时间我采用timer控件来出发,每10秒计算一次,并用时间判断是否该统计,如到了整点就该统计一小时数据了。

问题是:在进行access数据库操作时,指针总编程漏斗状,(指针编程漏斗时就不能进行其它的操作)刚开始约有3秒左右是漏斗状,而且随着程序运行的时间越来越长,漏斗出现的时间也越来越长,
最后就全是漏斗,这样就影响在程序中用鼠标点击其它命令。
我想是不是数据库读写,打开关闭数据表,搜索记录并平均统计过程中占用太多时间,或是跟内存什么的有关?有什么办法能解决?
 
用Sleep 代替Timer .
 
如果数据量大的话,可以改用ADO!
 
2、将每10秒的数据存入数据库(5个表,每个表为17个字段),并作图显示动态曲线。(保持数据库记录数不变,然后每次通过记录尾加数据,并删除第一条数据实现)

可以放在内存中处理,这样可以缩减好多处理时间
 
to 青萍:
如何在内存中处理?能够说具体一些?比如说??函数,??过程 或??控件。谢谢!
to zhongwanglong:
我觉得可能不是数据量的问题,数据并不多,数据库记录最多10000条,我想可能是数据库的操作问题,ado能否解决?
 
a.对access采用ado是最好的,微软一家亲吗。
b.操作采用adoquery。
c.避免操作时漏斗,采用多线程。
 
顶部