【问题标题】:Computed columns or store计算列或存储
【发布时间】:2011-05-23 15:43:57
【问题描述】:

我需要几个包含计数总数的计算列(索引列)。您认为在视图中使用计算列还是向将存储总计的表添加额外的列更好?添加额外的列可能意味着使用触发器来保持计数总数正确。

数据库是 MS SQL 2008 R2。

【问题讨论】:

  • 另外请接受答案

标签: sql sql-server-2008-r2 calculated-columns


【解决方案1】:

您可以使用索引视图来获得存储列的性能,而无需进行维护工作。

【讨论】:

    【解决方案2】:

    视情况而定。

    如果表格变化很大,但您很少需要计数,则视图会更好。 “视图与计算列”问题是数据库设计之一。如果您无法更改原始表或 DBMS 不支持计算列,请使用视图。如果您可以更改表定义,计算列可能会更好,但如果您并不总是需要这些数据,它们也会使定义变得混乱并使select * 变慢。

    如果表很少更改,但您需要这些数字很多,请使用带触发器的额外列以避免性能问题。

    【讨论】:

    • 对于记录每个用户的事务数(每分钟发生许多事务)的表,计算列是否会导致比实际总计列更高的性能损失?
    • 与性能一样,任何不包括测量一些真实数据的答案都有 90% 的可能性是错误的。只需在测试系统中尝试几种方法即可。
    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多