SQL Server计算列是否需要“持久性”才能有效地编制索引?

时间:2010-02-01 07:53:13

标签: sql-server indexing calculated-columns

SQL Server计算列是否需要“持久性”才能有效地编制索引?

它是Name和LoweredName(计算)列组合。所以我不认为它涉及MSDN文章中提到的精确内容。

2 个答案:

答案 0 :(得分:3)

与Mit​​ch所说的相反,您不需要为要创建的索引保留一个列(MSDN文章指出的是,如果计算列不确定,然后必须将其标记为持久化,然后才能考虑将其包含在索引中。

至于原始问题,我希望指数效率与任何其他专栏一样好 - 我们使用什么指标来提高效率?我当然不希望它占用更多空间。在INSERT / UPDATE期间会有一些计算开销,但无论列是否被标记为持久,你都会知道。

在通过索引进行查询时应该没有任何区别 - 无论是真实列,持久计算列还是未经存在的计算列,索引结构本身都将构造相同。

(希望最终编辑) - 如果你检索计算列,可能会有很小的性能损失,并且计算本身是昂贵的,与例如网络开销或其他I / O成本。但在转换为小写的情况下,我不希望能够注意到它。

答案 1 :(得分:1)

没有。但是,为了在计算列上创建索引,必须满足某些条件:BOL - Creating Indexes on Computed Columns