Javascript 是什么导致我的access数据库如此缓慢?

Javascript 是什么导致我的access数据库如此缓慢?,javascript,database,performance,ms-access,Javascript,Database,Performance,Ms Access,为了澄清这不是我的数据库,我也没有选择access,我只是在帮助一家公司开发一些已经实现的access数据库 无论如何,在他们的一些表单上,表单打开并运行非常缓慢,没有明显的原因。有一个表单在每个人的计算机上打开需要很长时间,但在那里运行良好;还有一个表单在大多数人的计算机上运行良好,在少数人的计算机上几乎无法使用 表单上有一些子表单,并且没有运行在后台的VBA脚本,这可能会导致一个无休止的循环,我的想法很难理解 我已经关闭了auto-namecorrect,其中一个显示“记录集无法编辑”,因为

为了澄清这不是我的数据库,我也没有选择access,我只是在帮助一家公司开发一些已经实现的access数据库

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

表单上有一些子表单,并且没有运行在后台的VBA脚本,这可能会导致一个无休止的循环,我的想法很难理解


我已经关闭了auto-namecorrect,其中一个显示“记录集无法编辑”,因为其中一个文本框上有一些分组,但即使在我努力解决这个问题时,它仍然运行得很慢,从表单属性识别记录源(表/查询/sql语句)并直接在受影响的机器上运行此操作。这将有助于缩小表单或记录源的问题范围。例如,您可能会发现其中一个表单引用了一个特别慢的查询(大型表、多个联接、DLOOKUP等),在这种情况下,您需要重点对其进行优化。

从表单属性(表/查询/sql语句)中识别记录源,并直接在受影响的计算机上运行此操作。这将有助于缩小表单或记录源的问题范围。例如,您可能会发现其中一个表单引用了一个特别慢的查询(大型表、多个联接、dlookups等),在这种情况下,您需要将重点放在优化上。

您可能想阅读:

您可能想阅读:

在我看来,这是最好的开始

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

A.慢开表格

B.表现缓慢的表格

有两种常见的原因导致:

  • 创建LDB文件/与现有用户争用。这个问题通常是通过某种形式的解决方案来解决的。如果打开第一个窗体的速度慢,您可以判断这是否是问题的原因;如果打开第一个窗体,则打开后续窗体的速度不慢。FWIW,我不使用这个方法,而是使用一个持久的数据库变量来完成同样的事情(这不是我最近发布代码的时候,但是这里可能有一个最好的上下文:)

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

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

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

    还有很多其他的事情要做,在解决性能问题的早期需要检查的一件事是每个主窗体的记录源。从性能角度看,左连接可能会非常昂贵,因此最好消除其中任何一个并非绝对必需的连接。我最近大大加快了一个表单的速度,该表单从子表向左连接到父表。在子表的PK字段中,如果没有parentID,子表就不可能存在,因此完全不需要左连接。删除它确实加快了从一张唱片到另一张唱片的导航速度。

    在我看来,这是最好的开始

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

    A.慢开表格

    B.表现缓慢的表格

    有两种常见的原因导致:

  • 创建LDB文件/与现有用户争用。这个问题通常是通过某种形式的解决方案来解决的。如果打开第一个窗体的速度慢,您可以判断这是否是问题的原因;如果打开第一个窗体,则打开后续窗体的速度不慢。FWIW,我不使用这个方法,而是使用一个持久的数据库变量来完成同样的事情(这不是我最近发布代码的时候,但是这里可能有一个最好的上下文:)

  • 链接表中的元数据已过期。例如,如果您在测试服务器的前端工作,将其移动到生产环境并更新连接字符串以指向生产后端,则可能会发生这种情况。更新连接