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上有唯一的聚集索引,那么这些列会被保留吗?
答案 0 :(得分:3)
在您的视图中,值是在运行时计算的。 “持久”一词被视为列名,而不是特殊关键字。
如果要创建持久化的计算列,则需要在CREATE TABLE语句中作为表定义的一部分,或者作为UPDATE TABLE语句执行此操作。您还可以考虑使用索引视图。
有关详细信息,请参阅文档:
答案 1 :(得分:1)
是
索引视图的结果集在物理上保留在 数据库的方式与典型的表存储方式类似。
https://technet.microsoft.com/en-us/library/dd171921(v=sql.100).aspx