SQL Server 2005 计算列被持久化

Posted

技术标签:

【中文标题】SQL Server 2005 计算列被持久化【英文标题】:SQL Server 2005 Computed Column Is Persisted 【发布时间】:2010-10-29 07:12:35 【问题描述】:

我在表中有一些计算列,需要知道是否应该将 Is Persisted 设置为 true。有什么优势?有什么缺点吗? “持续存在”是什么意思?

【问题讨论】:

【参考方案1】:

其他答案中未提及的另一件事:计算列必须是 PERSISTED 才能从 FOREIGN KEYs 中使用。

【讨论】:

【参考方案2】:

“持久化”在此上下文中表示“物理存储”。

这意味着计算值在插入(和更新)时计算一次并存储在磁盘上,因此不必在每次选择时再次计算。

持久化还会导致插入和更新的性能损失,因为必须计算列,但会提高后续选择查询的性能。

所以,这取决于你的使用模式,遵循哪种方法:如果你不经常更新,但查询很多,你应该设置persisted = true。

如果你更新频繁,或者你不关心检索性能,你应该考虑设置persisted = false

【讨论】:

以上是关于SQL Server 2005 计算列被持久化的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

SQL Server 和带有哈希字节的持久计算字段

如何使用 SQL Server 2005 在 NHibernate 中映射 uint

如何将 android 应用程序数据持久保存到本地 sql server

使用 Spring JPA 在 H2 和 Sql Server 中持久化的 Java UUID

[SQL Server]内存缓存数据写入磁盘延迟持久性Delayed Durability(和魔鬼交易)