视图中的计算列是否仍然存在?

时间:2011-10-09 05:23:12

标签: sql sql-server-2008

CREATE VIEW [dbo].[MyView] ([ID],[VisitDate],[StartDate] ,[EndDate])
WITH SCHEMABINDING  

    AS
    SELECT     id, VisitDate,dateadd(dd,-10,VisitDate)persisted,
       dateadd(dd,10,VisitDate)persisted
    FROM         dbo.Visits

我在ID和VisitDate上有一个非聚集索引。我想知道计算列StartDate和Enddate是持久的还是在引用视图时计算运行时

编辑:如果我在ID和VisitDate上有唯一的聚集索引,那么这些列会被保留吗?

2 个答案:

答案 0 :(得分:3)

在您的视图中,值是在运行时计算的。 “持久”一词被视为列名,而不是特殊关键字。

如果要创建持久化的计算列,则需要在CREATE TABLE语句中作为表定义的一部分,或者作为UPDATE TABLE语句执行此操作。您还可以考虑使用索引视图。

有关详细信息,请参阅文档:

答案 1 :(得分:1)

  

索引视图的结果集在物理上保留在   数据库的方式与典型的表存储方式类似。

https://technet.microsoft.com/en-us/library/dd171921(v=sql.100).aspx