2011-11-14 108 views
0

我有PHP的MySQL,处理分包商的发票为我公司建立了一个广告应用程式。的Sql汇总表或动态汇聚

我的问题是这样的。

允许不同取决于类型说我有3种不同类型,其全部计算(累计)发票。此外,返回的总数类型也取决于授权用户的权限。

所以我想辩论来处理它的最佳方法:

我可以计算出使用SQL我*觉得这是最快的发票,但需要我使用中的SQL业务逻辑。

我可以拉一切下来一个结果集,然后使用PHP的映射,并在运行时计算出的发票,

还是我倾向于使用不同的汇总表,它在创建/更新时和发票是靠在创建/更新,以及在mysql中创建视图来控制它们的返回方式。我认为这将是最好的,但我不知道。这会导致映射过程变得更加困难,但它会允许所有的业务逻辑保留在我的php类中,并且我的sql选择会被简化。

所以之前我承诺什么,我只是想一些其他的输入。

感谢约翰

回答

1

不要把业务逻辑在MySQL查询时,它可以在不服用性能损失是可以避免的。

我会在这种情况下,可能最简单的方法,就“在一个结果集拉都记录下来,然后用PHP来映射和计算在运行时的发票”。对于数量相对较低的数据库(如分包商发票数据库)来说,任何方法都足够快,以至于根本不需要进行优化。

如果您发现该请求太慢,或者在即时的数据捣鼓变成某种类型的瓶颈,然后用“汇总表”的解决方案去(假设这是允许速度,而方法仍然保持应用程序代码中的业务逻辑)。

把业务逻辑放在MySQL中是可以的,如果它真的是快速查询的唯一方法。但总的来说,避免这一点。

+1

+1对此我也同意,如果您认为处理过于缓慢,请分析所使用的SQL语句,并在最常用的列上创建索引,特别是那些涉及db级更多处理的索引,例如子句,总和,计数等等......如果你在表中有超过1000条记录,这也将大大加快处理速度。 – Stainedart

+0

谢谢,我确实喜欢在运行时测绘和计算的想法,因为它使所有事情合乎逻辑,但我担心它会使收集总计的变化极其困难,比如一份工作的所有发票的集合总数,或供应商付款期限的所有发票总额。除非我实施一项政策,以跟踪某些事件发生后发生的变化,例如编辑客户发票(供应商发票的集合总计有增加的利润)。对此有何想法? – John

+0

@Carl T.'s,我同意这些附加的观点。 –