【问题标题】:Access 2007 Linked table PerformanceAccess 2007 链接表性能
【发布时间】:2011-04-09 18:31:30
【问题描述】:

当链接的数据库表位于网络驱动器上时,我有一个 Access 2007 应用程序(以前在 Access 2003 中)遇到一些性能问题。 2003 年,该应用程序运行良好。现在在 2007 年,使用 sql 和记录集进行数据检索的速度下降得相当糟糕。我遇到问题的确切区域是:

DIM rs AS NEW ADODB.RECORDSET
rs.Open tsSql, CurrentProject.AccessConnection, iKeyset, iLock

iKeyset 设置为 0,iLock 设置为 3

rs.Open 命令需要 4 到 5 秒,这是一个问题,因为在我的某些表单上,这可能会在加载时发生多次。

有什么想法吗?

编辑:更不用说我相信在这些情况下,在设计视图中打开和保存表单似乎比正常情况要慢。

【问题讨论】:

  • 我这样做了support.microsoft.com/kb/275085(将所有表的 subdatasheetname 属性更新为“[None]”...努力看看这是否有帮助。
  • 以上并没有产生我正在寻找的结果
  • 你为什么使用 ADO 而不是更自然的 DAO?
  • 我反对 Fenton 先生,如果你只使用 JET,DAO 会更快。语法几乎相同,因此您可以在一个表单上尝试一下,看看它是否有助于访问 2007
  • 为什么要在生产应用程序的设计视图中打开/保存表单?

标签: ms-access ms-access-2007


【解决方案1】:

根据所涉及的 SQL 语句(即上面的变量“tsSQL”),您的记录集应该立即打开,无论是 ADO 还是 DAO。

我想到的想法:您的连接是否持久?与 2003 年相比,这似乎在 2007 年造成了更多的延迟。也许每次都在断开并重新建立连接。对于表单,当您的记录源为空白并在代码中设置时会发生这种情况,因此建议您始终拥有一个记录源,例如“tblBlankTable”(一个小的单记录表,只是为了让连接始终保持活动状态)打开)。 4 到 5 秒的延迟是关于你在没有到位时得到的。尝试确保在运行 rs.open 时始终将表单连接到数据库,看看是否有效。在您的情况下,您可能需要一个打开 ADO 连接的表单。 Access 论坛上有很多关于此的文章。

当你是唯一的用户与其他人打开带有锁定文件的数据库时相比,它更快吗?这就是告示牌。

另一个想法是升级时是否正确索引了所有内容。底层数据库是保持不变还是从 MDB 升级到 ACCDB?您没有指出 tSQL 中的内容,因此您可能正在加入非索引字段或导致该特定 tSQL 运行缓慢并且只需要添加主键的内容。

如果您的 'tsSQL' 涉及查询,我已经读到,在升级时重新编译所有查询很重要——将每个查询都进入设计模式,然后运行它们,然后再次保存它们。

您可以尝试使用自己的连接字符串连接到数据库——MDB/Jet 有一种格式,ACCDB/Ace 有另一种格式。从 Excel 到 MDB 或 ACCDB 的两者都有提供程序,但也许可以在 Access 中工作,至少可以调试您的问题。

【讨论】:

  • 呃,既然这里没有使用SQL Server,为什么还要涉及T-SQL?
  • 关于保持持久连接(这实际上只是意味着确保 LDB 文件被创建一次并保持打开状态),Tony Toews 在这里有想法:granite.ab.ca/access/performanceldblocking.htm。实际上没有必要打开记录集——您需要做的只是初始化一个指向后端数据库的数据库变量,这将导致 LDB 文件被创建。您需要在应用程序的关闭例程中对其进行清理(尽管您也需要使用记录集执行此操作)。
  • Patrick 在他的 rs.OPEN 命令中编写了“tsSQL”(可能是 SELECT)语句。他没有给我们分配给该变量的 SQL。也许它包括在他从 2003 年升级到 2007 年之后不再索引的字段上的连接,或者可能是子查询或以前可以工作但现在由于底层数据库更改而变慢的东西。
  • 您为什么不编辑您的答案以引用“tsSQL”而不是“tSQL”并表明您正在使用原始问题的变量名称。我不可能是唯一一个会被绊倒的人。
  • 感谢您的意见。我最终重建了表结构,并在此期间验证了索引是否正确。我还验证了 sql,它的所有基本 sql 没有子查询或连接。由于该应用程序都是面向对象的,而且它似乎只在有多个用户时才成为问题,我知道它与 sql 本身无关。我调查了 ldb 问题,发现如果我在应用程序启动时创建了一个持久连接并在最后关闭它,一切都会好得多。
【解决方案2】:

有一个修补程序Description of the Access 2007 hotfix package (Access.msp): August 26, 2008 提到了性能问题,但这很可能包含在 Access 2007 SP2 中。单击 Office 按钮 >> 访问选项(右下角) >> 资源选项卡,查看标题为 Microsoft Office Access 2007 的部分显示的内容。我的状态是 12.0.6535.5005)。

【讨论】:

  • 是的,我正在使用 sp2 12.0.6535,客户也在使用...我查看了该修补程序,但似乎没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多