Sql-Server

計算列與視圖

  • April 10, 2017

我正在嘗試考慮最好的方法來做到這一點。如果我在 sql server 中有這樣的表:

StudentPointsTable

StudentID

TestDate

Points

我還需要為學生計算平均值和標準差。我知道我可以創建一個視圖,或者使用這些計算列創建一個新表,或者將計算列添加到這個表中。

不確定是否還有其他選擇,但就性能而言,最好的方法是什麼?

  1. 創建視圖不會給您帶來任何性能提升,但可以幫助您抽象底層對象和管理使用者的安全性。
  2. 使用索引視圖絕對可以幫助您預先進行計算,但您需要小心,如此處詳細說明的那樣

SQL Server 必須始終確保索引和基表中的數據是同步的,因此我們在為視圖添加索引時需要小心。每次基礎列添加或刪除或更新新行時,SQL Server 都必須維護每個聚集和非聚集索引,無論是在基表上還是在引用的索引視圖上。這將導致額外的寫入,從而降低性能。 3. 我不會在同一個表中創建計算列,因為您的表中將有冗餘數據(該學生每行中學生的平均值)。使用額外的儲存空間,記憶體中的頁面數量減少等。 4. 您還應該根據查詢此表的方式考慮索引策略。意思是按一名學生、學生+日期、一名學生+日期範圍分組嗎?

引用自:https://dba.stackexchange.com/questions/170613