我正在为Access中的SQL Server重新设计一个前端,允许我们公司的非程序员查询数据库。
问题是有些表非常大。目前我使用的是链接表。我尝试允许的一个查询访问五个表,其中包括那个大表。该表有数百万行,因为它包含公司中进行的每一笔交易。
当我在Access中尝试查询时,它花了几分钟时间,没有完成,Access就冻结了。因此,我决定在进行连接之前使用子查询来缩小大表的范围。表中的每个条目都有一个日期,因此我进行了一个子查询,并对其进行了过滤,以便仅返回当天,以便进行测试。实际上,因为我只是在测试,所以我甚至进一步过滤,只返回date列。这将范围缩小到80,000个条目左右。最终我确实得到了结果,但它花了大约三分钟,而这只是我正在测试的子查询。一旦返回结果,每次我尝试使用滚动条时,Access都会冻结。
接下来,我尝试了直通查询,认为这样会更快。它更快了,但仍然需要大约一分半钟的时间,而且滚动条仍然存在冻结问题。问题是,同样的查询在SQL server上只需要3秒(我指的是日期查询)。我希望我可以非常快地获得这个查询,然后将它用于连接。
我可以使用视图,但问题是我希望用户能够指定日期范围。
我能做些什么来提高性能,还是我搞砸了?
发布于 2014-07-18 23:42:30
让用户滚动浏览成千上万条记录中的第十条是没有意义的。它们将在数据泛滥中丢失。相反,应该为他们提供分析数据的方法。首先回答问题:“用户需要什么类型的信息?”他们可能想知道在一天或一小时内发生了多少特定类型的交易。他们可能想要比较不同的日期。让用户对数据进行分组;这减少了必须传输和显示的记录的数量。向他们显示计数、总和或平均值。让他们过滤数据或在图表中显示分组的数据。
https://stackoverflow.com/questions/24828577
复制相似问题