假设我有一个如下所示的索引视图:
ALTER VIEW dbo.MyIndexedView WITH SCHEMABINDING
AS
SELECT ord.SomeColumn, COUNT_BIG(*) AS Count
FROM dbo.Ordered ord
WHERE ord.CreatedWhen > CONVERT(DATETIME, '2014-11-01', 121)
GROUP BY ord.SomeColumn
GO
CREATE UNIQUE CLUSTERED INDEX [CIX_MyIndexedView] ON dbo.MyIndexedView (SomeColumn)
GO
如果我更改此视图中的日期时间值(例如“2014-11-01”),则需要重新生成聚簇索引。
有没有办法让现有的视图和索引保持有效,直到新视图和索引完全构建,然后让它们交换? 如同Online=On
这是我会怎么做。首先,创建几个备用模式:
现在,当需要刷新视图并更改过滤谓词时,在
HoldingTank
模式中创建它:现在,开始交易,并交换对象。
然后稍后您可以简单地从以下位置删除视图的旧副本
Swapper
:我在这些博客文章中详细介绍了这个解决方案: