【问题标题】:What is causing my access database to be so slow?是什么导致我的访问数据库如此缓慢?
【发布时间】:2011-04-12 14:41:07
【问题描述】:

为了澄清这实际上不是我的数据库,我没有选择访问权限,我只是通过开发一些他们已经实施的访问数据库来帮助一家公司。

无论如何,在他们的某些表单上,表单打开并运行得非常缓慢,没有明显的原因。有一种表格需要很长时间才能在每个人的计算机上打开,但在那里运行良好,还有另一种表格在大多数人的计算机上运行良好,但在少数人上几乎无法使用。

这些表单上有一些子表单,并且没有在后台运行可能导致无限循环的 VBA 脚本,我对想法感到困惑

我已关闭自动更正名称,但其中一个显示“无法编辑记录集”,因为其中一个文本框有一些分组,但即使我按我的方式解决它仍然运行缓慢

【问题讨论】:

  • 就目前而言,这个问题无法回答。首先,我们需要知道它是什么数据库,它的大小以及慢查询是什么样的。
  • 只是为了澄清,你的问题不是很详细。无论如何,它没有足够的信息来正确回答。
  • 致想要结束这个问题的人。为什么?因为问题很模糊?那又怎样?

标签: javascript database performance ms-access


【解决方案1】:

在我看来,Tony Toews's Access Performance FAQ 是最好的起点。

也就是说,您描述的问题听起来可以分为两类:

A.缓慢打开表格。

B.执行缓慢的表单。

A 的常见原因有两个:

  1. 创建 LDB 文件/与现有用户争用。这个问题通常可以通过Tony's LDB Locking article 的某种形式的解决方案来解决。如果打开第一个表单很慢,您可以判断这是否是问题的原因,如果您打开第一个表单,打开后续表单并不慢。 FWIW,我不使用那种方法,而是使用一个持久的数据库变量来完成同样的事情(不是我最近一次在 SO 上发布代码,但也许有最好的上下文的一个在这里:MS Access: Is there a significant overhead when using CurrentDB as opposed to DBEngine(0)(0)? )。

  2. 链接表中的元数据已过期。例如,如果您在测试服务器上的前端工作,将其移动到生产环境并更新连接字符串以指向生产后端,则可能会发生这种情况。更新连接字符串不会刷新存储在链接表定义中的所有元数据,也无法真正完全刷新它们。因此,您必须在生产环境中删除并重新创建链接表。这种情况的症状是在测试环境中表单立即打开或仅在一两秒内打开,而在生产环境中需要一分钟或更长时间才能打开。打开后,它们通常工作得很好。 FWIW,除了 Access 2000 的早期阶段,我还没有真正看到过这个问题,当时这是一个重大而可怕的问题,几乎让我失去了一份工作(我的第一个 A2000 项目)。

性能缓慢的表单更难修复,但原因通常很简单:表单一次加载了太多数据。具有大量子表单(通常在选项卡控件上)和大量大型组合框的表单通常是罪魁祸首。解决方案是在子表单/组合框实际显示之前不加载它们。在选项卡控件中,这意味着在选项卡控件的 OnChange 事件中为每个选项卡加载子窗体。对于组合框,您将在显示它们时加载它们,或者如果它们中有太多记录(我会说超过 1000 条),在用户输入 1 或 2 个字符之前不要加载行源(使用组合框的 OnChange 事件)。

这样做的问题是,您正在用一个主要的减速(在第一次打开表单时加载所有内容)换取一些小得多的减速(根据需要加载每个子表单/行源)。这是一个权衡,你必须决定你想要痛苦的地方。

还有很多其他事情要做,在解决性能问题时要尽早检查的一件事是每个主要表单的 Recordsource。左连接在性能方面可能会变得非常昂贵,最好消除任何不是绝对需要的连接。我最近才大大加快了从子表到父表的左连接的表单的速度。子表的 PK 字段中没有 parentID 的子项是不可能存在的,因此完全没有必要进行左连接。删除它确实加快了从记录到记录的导航。

【讨论】:

    【解决方案2】:
    【解决方案3】:

    从表单属性(table/query/sql 语句)中识别记录源并直接在受影响的机器上运行它。这将有助于将问题缩小为表单或记录源。例如,您可能会发现其中一种表单引用了一个特别慢的查询(大表、多个连接、dlookup 等),在这种情况下您需要专注于优化它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2017-09-19
      相关资源
      最近更新 更多