2015-11-06 74 views
-1

我有一個web應用程序來控制銷售和商品的購買以及庫存和價格...使用多個通用perpose查詢或一個特定的查詢

它是建立與AngularJs,PHP和MySQL(PDO) 。

我的模型有很多一般perpose查詢功能,如:

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

和更多...

現在,我開發一個Dashboard Page,以示對事物的統計和頂級的視野,含Fe:

  • 活躍的項目數
  • 號賣物品+總和
  • 目前的債務給供應商

以及更多關於數據的聚合。

我的問題是兩個什麼樣的選擇:

我應該使用許多基本的查詢,在我的模型,並彙總數據客戶端...
將這個是有點更容易維護?

OR

我應該創建一個特定的查詢得到什麼樣的數據此儀表板的需求。
大概性能會更好。

回答

1

您應該毫無疑問地創建一個具體的查詢來獲取您的儀表板需要的數據。實際上,您應該爲它創建一個視圖,以便實際的select語句很簡單。它具有以下幾個優點:

  • 聚合是什麼數據庫擅長:使用索引(如果設計得很好),並將結果緩存爲所有客戶從中受益,導致難以被擊敗性能;
  • SQL語言非常適合用於表達聚合,當然,當您將其與客戶端JavaScript進行比較時,
  • 它會幫助你進行調試。如果不運行Web應用程序,您可以直接在數據庫上運行select以驗證結果,因此可以更好地隔離任何問題;
  • 如果您創建數據庫view,您甚至可以決定在一天內更改view的內部定義,而無需觸摸您的Web App代碼;
  • 服務器和客戶端之間傳輸的數據量保持最小:僅傳輸所需的數據。這對通過移動網絡連接的用戶來說可能很重要。
+0

感謝您的詳細建設性答案。 –