Sql摘要表或动态聚合

时间:2011-11-14 16:49:44

标签: php mysql relational-database

我有一个用php mysql构建的应用程序,用于处理我公司的分包商发票。

我的问题是这个。

假设我有3种不同类型的发票,这些发票都根据类型进行了不同的计算(总计)。此外,返回的总类型取决于授权用户的权限。

所以我试图讨论处理它的最佳方法:

我可以使用我认为最快的sql来计算发票,但是需要我在sql中使用业务逻辑。

我可以在一个结果集中删除所有内容,然后使用php在运行时映射和计算发票,

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

所以在我做任何事情之前,我只想要一些其他的输入。

感谢约翰

1 个答案:

答案 0 :(得分:1)

如果可以避免性能损失,就不要在MySQL查询中放置业务逻辑。

我从最简单的方法开始,在这种情况下,“在一个结果集中拉下所有内容,然后使用php在运行时映射和计算发票”。对于数量相对较少的数据库(如分包商发票数据库),机会非常好,任何方法都足够快,根本不需要优化。

如果您发现请求太慢,或者即时数据处理成为某种瓶颈,那么请使用“汇总表”解决方案(假设这是一种允许速度仍然存在的方法将业务逻辑保留在应用程序代码中。)

如果它真的是快速查询的唯一方法,那么将业务逻辑放在MySQL中是可以的。但一般来说,避免这种情况。

相关问题