2012-08-10 95 views
2

随着时间的推移,我的表格变得越来越慢。起初,在记录之间导航几乎没有花时间。过了一会儿,它花了一秒钟。过了一会儿,切换记录花了两秒钟。现在我在三秒钟切换记录。提高子表格的速度

下面是详细信息:

用户得到提示,有一些选项可供选择的形式。根据这些选项,主窗体弹出,只显示相关记录。主窗体链接到由用户选择生成的查询。在主窗体上是直接链接到另一个表的子窗体(QuoteRunResults)。该表现在包含354,000条记录。 缓慢的形式是子表格

下面是一个简单的查询,可以使用:

SELECT * 
FROM QUOTERun 
WHERE QuoteNumber = {UserSelectedQN} 
ORDER BY RunID DESC 

反正我有可以加快子形式?

+0

您已经压缩并修复了后端数据库,前端数据库,反编译了前端,并确保您有适当的索引,yesno? – Fionnuala 2012-08-10 14:43:02

+0

是的,我已经完成了所有这些。这是每周进行的定期维护,以确保一切顺利。这可能是子表格正在处理两个数据?每次更改记录时,表单是否会返回到包含354,000条记录的表格? – 2012-08-10 14:46:15

+0

如果它必须获得新记录,那么它会回到表格中,但是如果表格可以利用索引,它应该很快。 – Fionnuala 2012-08-10 14:51:27

回答

2

我以前经历过这种情况。我做了什么来完全消除滞后是:

  • 使用查询来生成两个表单所需的两个数据集。
  • Programically创建临时表中的每个数据集,并从 填充它查询
  • 链接的形式,临时表
  • 的结果允许用户做任何他们需要做的数据
  • 一旦形式programically关闭从 临时表更新真实的数据
  • 删除临时表

这实际上所做的形式飞。我没有更多的滞后问题。当我点击按钮移动到下一个记录时,它立即发生。在我的情况下,我在OnTime事件中发生了很多事情,导致表单减慢。一旦我应用了上述,就马上加快了速度。

+1

您是否认真建议将300K记录复制到用户的桌面?如果所需的选择小于该问题可以通过使用明确定义的索引进行查询来解决,无论如何。 – Fionnuala 2012-08-10 15:19:52

+0

不,我建议运行查询来获取用户需要处理的记录。然后将这些记录复制到一个临时表中使用。索引在我的情况下有所帮助,但不如我的建议。 – 2012-08-11 00:48:58

+0

我确实尝试了你的建议,它确实提高了速度。其实我很惊讶。我必须弄清楚如何锁定正在处理的记录,并在表单关闭后进行更新。我弄明白了,现在一切都很顺利。 – 2012-08-15 04:04:35