2

SQL Server 计算列是否需要“持久性”才能有效地对其进行索引?

它是一个名称和一个 LoweredName(计算)列的组合。所以我不相信它处理 MSDN 文章中提到的精确内容。

4

2 回答 2

3

与 Mitch 所说的相反,您不需要为要创建的索引保留一列(MSDN 文章指出,如果计算的列不是确定性的,那么它必须在它可以被标记为持久化之前被考虑纳入索引。

至于最初的问题,我希望索引效率与任何其他列一样好 - 我们使用什么指标来衡量效率?我当然不希望它占用更多空间。在 INSERT/UPDATE 期间会有一些计算开销,但无论该列是否被标记为持久化,您都会有这种开销。

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

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

于 2010-02-01T08:04:10.067 回答
1

不可以。但是必须满足某些条件才能在计算列上创建索引:BOL - 在计算列上创建索引

于 2010-02-01T07:58:18.873 回答