Access爱好者--
所属分类: 系统优化 作者: 共享 更新日期:2003-10-6 10:31:55 阅读次数:736

优化Microsoft Access提高速度


压缩、压缩

  要保证经常性的压缩你的程序代码。当你在开发和使用Microsoft Access数据库时,你要经常性地增加和删除数据、代码等等。现在的问题是Microsoft Access并不能有效地释放已分配的但被删除的对象空间,这将意味着即使你删除了一个对象,而这个对象仍然在你的数据库中占据空间。压缩数据库将迫使Microsoft Access真正删除这些对象并回收其占据的空间,从而使得你的数据库尽量小但却更有效。我曾把逐字逐句查询的平均时间减少了30%——50%,而做到这一点仅仅是通过去压缩那些由于经常使用又缺乏压缩而变得过度膨胀的数据库程序,因此,在运行程序的过程中,不要忽视压缩过程的重要性。正如你要定期清除硬盘数据碎片一样,你和你的用户也应当定期压缩数据库来保证它始终最有效地运行。


  只用代码

  你可能希望通过宏操作来搭建一个应用程序的模型,一旦你开始优化你的程序的最终性能,一定要把所有的宏重新写成代码。这主要是因为Microsoft Access代码要比宏运行得快的多。但遗憾的是有三个宏操作你不能将他们改写成代码,这三个宏是Autokeys、Autoexec和Addmenu操作,这三个宏在Microsoft Access中没有相应的等价类,因此你只能被迫使用他们。不过,你可以克服Autoexec的限制,只需要定义Autoexec为调用你的Access Basic Autoexec函数。


  优化数据类型声明

  当你在你的代码中声明数据类型时,你应该试着尽可能精确。因为若是一个变量的类型(如果没有特别声明,缺省为可变类型)非常灵活自由的话,那么这种类型同时也将是最浪费内存的一种类型。这样一来,如果你知道check Balance这个变量不需要超过4位小数精度的话,那么就把它定义成确定类型而不是可变类型。对你的过程函数的定义同样也可以如此操作(比如说,把函数PostCredit()声明为整形,而不是Function PostCredit())。请注意这样一个事实,如果你估计一个变量将会被处理成一个空值,那么你需要去把它定义成一个可变类型而不是一个确定的严格的数据类型,否则你会得到一个错误信息。同样地,要注意整形除法和浮点除法之间的差别。


  经常使用From/Report变量

  在你的程序中,你需要保证你能提前解决尽可能多的查询工作。这意味着什么呢?举个例子来说明:如果你想在代码中查阅一个名为[NetPrice]的文本框,你可以使用这样一条语句:

  Mytemprariable=Forms![Customer Invoice]![Net price]

  对于这条指令,Microsoft Access首先在Forms对象里搜索名为[Customer Invoice]的表,一旦它找到这张表,Microsoft Access接下来寻找名为[NetPrice]的控制,并进行正确的操作。从这个例子可以看出,Microsoft Access经过两次查询最终确定我们指定的控制。如果你想在同一程序(函数或者子函数)中再次查询[Customer Invoice]表中任一控制,你可以删除可能会在下次出现的多余语句,而只使用如下语句:

  Dim F as form

  Set F = Forms![Customer Invoice]

  现在,你的Form变量将自动指向Form[Customer Invoice],允许Microsoft Access 避免每次在你需要查找[Customer Invoice]表中任一对象时,都要把数据库的Form对象中全部搜索一次。为了查阅控制[NetPrice],你只需要简单地使用下面的语句:

  Mytempvariable=F![NetPrice]

  你也可以对Report对象作相同的操作(比如,set R=Reports![MyReport])。当你在一个函数中仅仅只对一个Form或Report访问一次,你可能在速度性能方面得不到什么太大得好处,但是一旦你开始在同一个Form或Report中进行的访问操作超过一次,你将会看到明显的时间减少。于是,通过使Microsoft Access避免作多余的查阅,你将大大地提高你程序的速度。


  在可以应用的地方使用windows函数

  无论何时,只要相关,总是可以用一个windows函数调用来代替Access Basic代码执行同一个操作。这样你将节省开发时间,因为windows函数调用是已经完成编码并经过优化,同时也因为它们是用C语言编写的(机器可执行),而Access Basic代码则要被编译成P代码形式,同时需要在执行时一行一行地解释。一个最普通的例子是custom.ini设置。你可以使用Access Basic文件函数去得到一个自由文件指针,打开文件,读/写文件,然后关闭它。但是如果你完全可以简单地使用GetPrivateProfileString和WritePrivateProfileString函数来实现,它们既快且已经编码优化随手可用,你为什么还要自寻烦恼呢?(参考:“Enhanced Microsoft Access: Using the Win16 API”)


  你的Microsoft Access数据库应用程序运行速度越快,你就能更好地完成你的任务,也就是向你的用户提供最有效的选择、管理、发送他们的数据的能力。我真诚希望以上这些小技巧能协助你达到这个目标。


--------------------------------------------------------------------------------
相关文章

数据库设计中的敏捷方法 2004-2-9 11:19:16
大型数据库设计原则 2003-12-15 12:49:18
ERwin--简化的数据库设计工具 2003-12-15 12:41:40
Microsoft Access秘密、技巧和陷阱 2003-10-17 19:58:04
如何诊断/修复损坏的 Jet 4.0 数据库 2003-10-14 8:31:26
数据库应用程序需注意的问题 2003-10-6 11:11:06


系统优化
控件使用
数据库设计
数据库连接
系统安全
OLE自动化
常见问题
实用代码
属性详解
网络相关
实用API
经验分享
精选教程
字符处理
ADP相关



文章搜索



制作维护:李寻欢     Mail:[email protected]

关于本站 -- 网站服务 -- 版权条款 -- 联系方法 -- 网站帮助
Access爱好者版权所有 Copyright 2003-2005 All Rights Reserved 未经许可不得盗链