使用多个常规perpose查询或一个特定查询

时间:2015-11-06 21:49:23

标签: php mysql sql web database-design

我有一个控制销售和购买商品以及库存和价格的网络应用程序......

它是使用AngularJs,PHP和MySQL(PDO)构建的。

我的模型有许多常规查询功能,例如:

  • getShops()
  • getShopInfo(shopId)
  • GetItems(shopId)
  • GetSuppliers()

还有更多......

现在,我开发了Dashboard Page,以显示事物的统计数据和顶级视野,包含f.e:

  • 活跃项目数
  • 已售商品数量+总金额
  • 当前对供应商的债务

以及更多关于数据的聚合。

我的问题是两者的选择:

我应该在我的模型中使用许多基本查询,并聚合数据客户端......
这会更容易维护吗?

OR

我应该创建一个特定查询来准确获取此仪表板所需的数据。
可能表现会更好。

1 个答案:

答案 0 :(得分:1)

毫无疑问,您应该创建一个特定的查询来准确获取仪表板所需的数据。实际上,您应该为它创建一个视图,以便实际的select语句很简单。它有几个优点:

  • 聚合是数据库擅长的:使用索引(如果设计得好),并为所有客户端缓存结果以使其受益,从而产生难以打败的性能;
  • SQL语言非常适合制定聚合,当然,当您将其与客户端JavaScript进行比较时,
  • 它将帮助您进行调试。如果不运行Web应用程序,您可以直接在数据库上运行select以验证结果,从而更好地隔离任何问题;
  • 如果您创建数据库view,您甚至可以决定有一天更改view的内部定义,而无需触及您的Web应用程序代码;
  • 服务器和客户端之间传输的数据量保持最小:仅传输所需的数据。这对于通过移动网络连接的用户来说非常重要。