计算列与视图

SQL*_*ing 2 index sql-server view computed-column

我正在考虑最好的方法来做到这一点。如果我在 sql server 中有这样的表:
StudentPointsTable
StudentID
TestDate
Points

我还需要为学生计算平均值和标准差。我知道我可以创建一个视图,或者用这些计算列创建一个新表,或者将计算列添加到这个表中。

不确定是否还有其他选择,但在性能方面,最好的方法是什么?

Sql*_*ide 5

  1. 创建视图不会给您带来任何性能提升,但可以帮助您抽象底层对象和管理用户的安全性。
  2. 使用索引视图,绝对可以帮你做事先的计算,但您需要在详细解释要小心这里

    SQL Server 必须始终确保索引和基表中的数据是同步的,因此我们在向视图添加索引时需要小心。每次基础列添加、删除或更新新行时,SQL Server 都必须维护每个聚集和非聚集索引,无论是基表还是引用的索引视图。这将导致额外的写入,从而降低性能。

  3. 我不会在同一个表中创建计算列,因为您的表中会有冗余数据(该学生的每一行中一个学生的平均值)。使用额外的存储空间,减少内存中的页面数量等。

  4. 您还应该根据查询此表的方式考虑索引策略。意思是按一名学生、学生 + 日期、一名学生 + 日期范围分组?

  • @GarethLyons 基本上是一个视图,仍然必须对表执行。从性能的角度来看,不确定它会买什么。 (2认同)