将WHERE子句添加到索引视图

时间:2014-02-06 18:38:20

标签: sql-server ssms

我有一个

的索引视图
CREATE VIEW MyView WITH SCHEMABINDING AS
SELECT a.One, a.Two, b.Three
FROM
Alpha a
INNER JOIN Beta b ON a.Id = b.Id

然后我用

创建索引
CREATE UNIQUE CLUSTERED INDEX IX_my ON MyView (One, Two)

当我尝试在SSMS视图设计窗口中编辑定义视图的SQL时,添加过滤器

WHERE a.MyFilter = 0

应用更改时出现问题:

  

警告:您的修改很可能会导致视图无法编入索引。

实际上,如果我继续进行视图更新并且索引被删除。

我可以在保持索引的同时以某种方式添加我的过滤条件吗?

1 个答案:

答案 0 :(得分:0)

事实证明这是可能的。

而不是使用SSMS视图设计器,

  • 删除视图
  • 通过在查询窗口中执行CREATE VIEW MyView ...重新创建视图
  • 通过在查询窗口中执行CREATE UNIQUE CLUSTERED...来添加索引

目前还不清楚为什么视图设计师不执行这些相同的步骤。在没有设计者的情况下执行它们会导致索引被正确创建。

相关问题