在SQL Server中的架构绑定视图上创建索引

时间:2018-09-02 11:18:16

标签: sql-server indexing view

我正在尝试为架构绑定视图创建索引。此视图包含并集所有运算符和一些联接。如何为该视图创建索引?因为我在我的过程中使用左联接来使用视图类型。所以我必须提高性能。

例如

create table a
(
     prodid int,
     prodname varchar(100)
)

insert into a values(1,'ramesh')

create table b
(
     prodid int,
     prodname varchar(100)
)

insert into b values(2,'kumar')

create view v1 
with schemabinding 
as
     select tb1.prodid, tb1.prodname 
     from dbo.a tb1 
     union all 
     select tb2.prodid, tb2.prodname 
     from dbo.b tb2

视图创建成功,但是无法为以上视图创建索引-我收到错误

  

它包含一个或多个联合,相交运算符

还有其他方法可以为此视图创建索引吗?

CREATE UNIQUE CLUSTERED INDEX  CX_V1
ON dbo.v1(prodid, prodname); 

2 个答案:

答案 0 :(得分:1)

问题不在于SCHEMABINDING,而是因为索引视图中不允许UNION ALL。我希望错误消息能够清楚地表明这一点。参见the documentation for index view requirements

为什么还要为此视图编制索引?假设基础表在prodidprodname上具有唯一的非聚集索引,我不希望索引视图会显着提高性能。

答案 1 :(得分:0)

您不能在使用联合运算符的视图上创建索引,而且我认为没有办法。