MySQL自定义报告策略

时间:2012-02-08 14:30:49

标签: php mysql reporting

我们有一个PHP / MySQL应用程序,用户可以在其中创建自己的“数据库”,这可能会变得非常复杂。在MySQL上,它被构造为一组属性表,其中包含record_idfield_idfield_value等列。我很清楚这种结构的优点和缺点,所以请考虑这不会改变。

我们已经拥有一个自定义高级搜索系统,用户可以通过在字段之间和内部使用布尔运算符组合来自任何字段的条件来查询这些数据库。

现在我们必须实施报告功能,以便他们能够制作自己的报告。这可能包括一对多关系的多组数据。

例如,考虑一个“人员”数据库,其中每个人可能有多个联系人和多个地址。通过我们的自定义搜索,可以很容易地列出在美国出生的所有人。但我也希望在结果集上显示每个人的所有联系人和地址。

我可以看到两种可能的解决方案:

  1. 包含多个JOIN语句的单个SQL查询,用于获取所有数据。在这种情况下,每个人可能有多行,具体取决于他们有多少联系人和地址,我必须在显示(或组织)结果的PHP循环中处理。我担心这可能会变得太复杂,因为报告可能有无限数量的一对多信息(在我的例子中,我只有两个,地址和联系人)。

  2. 对于每个人,运行'n'个附加查询,每个查询对应一个到多个数据的每个块。在我的例子中,这将是一个查询联系人,另一个查询地址。这种方法可以导致运行大量查询来构建整个报告。

  3. 我知道这两种方法都有其缺点,但有没有一种“推荐”方式可以继续这样的情况?

1 个答案:

答案 0 :(得分:1)

这当然取决于您认为必须检索所有数据的查询量。从性能角度来看,建议执行大型连接,因为它可以比多个小型查询更有效地处理。

你会发现,使用第二种方法比使用第一种方法需要更长的时间。