SQL Server计算列是否需要“持久性”才能有效地编制索引?
它是Name和LoweredName(计算)列组合。所以我不认为它涉及MSDN文章中提到的精确内容。
答案 0 :(得分:3)
与Mitch所说的相反,您不需要为要创建的索引保留一个列(MSDN文章指出的是,如果计算列不确定,然后必须将其标记为持久化,然后才能考虑将其包含在索引中。
至于原始问题,我希望指数效率与任何其他专栏一样好 - 我们使用什么指标来提高效率?我当然不希望它占用更多空间。在INSERT / UPDATE期间会有一些计算开销,但无论列是否被标记为持久,你都会知道。
在通过索引进行查询时应该没有任何区别 - 无论是真实列,持久计算列还是未经存在的计算列,索引结构本身都将构造相同。
(希望最终编辑) - 如果你检索计算列,可能会有很小的性能损失,并且计算本身是昂贵的,与例如网络开销或其他I / O成本。但在转换为小写的情况下,我不希望能够注意到它。
答案 1 :(得分:1)
没有。但是,为了在计算列上创建索引,必须满足某些条件:BOL - Creating Indexes on Computed Columns