【问题标题】:use multiple general perpose queries or one specific query使用多个通用查询或一个特定查询
【发布时间】:2016-02-08 03:47:48
【问题描述】:

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

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

My Model 有很多通用 perpose 查询功能,例如:

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

还有更多...

现在,我开发了一个Dashboard Page,用于显示事物的统计数据和顶级愿景,包含 f.e:

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

以及更多的数据聚合。

我的问题是两者中的哪个选项:

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

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

【问题讨论】:

    标签: php mysql sql web database-design


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2011-08-14
      • 2023-03-17
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      相关资源
      最近更新 更多