80个查询太多了吗?

时间:2011-06-24 00:35:49

标签: sql database ms-access ms-access-2007

我有大型数据库,包含数千条记录,我需要每周查询一次。然后,我必须使用Access Reports创建此数据的摘要。当我第一次创建数据库(我最近做过)时,我构建了几种类型的查询(大约80个),然后创建每个子报告,然后将这些子报告放在一个巨大的主报告中。

我之前从未使用过数据库,有些东西告诉我,也许我不应该有80个不同的查询,填充80个不同的子报表。我不知道,也许没关系。但这是我的问题,是否有任何理由我应该返回并重做其中一些查询并将它们合并到20或30(这将要求我重做子报告和主要报告),或者它是完全没问题的。将这么多查询保存在我的数据库中。

请记住,每个查询虽然每个只包含2个或3个函数,但它有一个非常具体的任务,我无法完全摆脱,我只能通过组合几种类型将这些函数添加到更大的查询中查询。另外,就像我说的那样,我必须每周使用这些查询,所以我真的不想像有些人选择的那样在运行中构建它们。

无论如何,是否有一些不可预见的问题,我错过了这么多疑问,或者这是正常的吗?

4 个答案:

答案 0 :(得分:6)

如果它符合您的要求(即它“足够快”)并且不妨碍其他人(即它不会减慢其他人的速度),那么应该没问题。

我只是确保所有查询都针对目标数据集单独运行。在开发过程中,它可能会对50行产生很大影响,但是生产中有1M行。

但如果它在您的生产数据库上运行得足够快,那么就完成它并解决另一个问题。

如果您想从中学习,请将其应用于未来的项目,而不是修复您刚刚铺设的道路。

答案 1 :(得分:2)

在不知道所有细节的情况下,无法回答是否应该有20或80或200个查询。但是,拥有更多查询并不会对任何事情造成任何伤害,并且作为一般数据库问题,您的查询最好专注于他们特别需要的内容,而不是让少数“通用”查询返回更多数据不是真正必要的。

如果您的查询较少,重点较少,并且需要更改报表/查询以显示其他数据,则可能需要返回并重新测试依赖于相同查询的所有报表。确保他们没有被改变打破。

答案 2 :(得分:2)

这是一份报告。在数据库中进行80次查询并不是那么糟糕。对一个报告有80个查询...

如果性能不是问题,那么您可能没有问题。

其中一些查询是否返回基本相同的列信息但结果不同?如果是这样,请考虑重构您的查询以使用参数。

答案 3 :(得分:1)

为什么需要保存查询?您可能会有很多报表/子报表,但您可以将SQL SELECT保存为相关报表的Recordsource属性,而无需将SQL保存为已保存的查询。

我尽量减少已保存查询的数量,因为您拥有的查询越多,跟踪它们的难度就越大。然后你最终需要提出某种命名约定,这样你才能知道它是什么,最后你最终会陷入混乱。

此外,重复使用不是这样做的理由。一般来说,重用对象是好的,但保存的QueryDefs的问题是没有简单的方法来测试依赖关系(尽管如果你打开Name AutoCorrect,你可以看到使用查询的位置)。因此,如果您重新使用查询来对一个上下文进行更改,以便在使用它的其他上下文中中断查询,那么这很容易。因此,一般情况下,我不会重复使用已保存的查询,除非所涉及的数据集在100%的时间内完全相同(例如,表单和报表呈现完全相同的数据)。

所以,基本上,我会说80个已保存的查询在一个体面的应用程序中没什么大不了的,但是从你所描述的内容来看,我认为没有理由将SQL存储在已保存的查询中。在这种情况下,ZERO保存的查询将是适当的数字。

请参阅我最近关于Query Design Practices in SQL的问题的帖子。