代码之家  ›  专栏  ›  技术社区  ›  Ram

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

  •  0
  • Ram  · 技术社区  · 7 年前

    我正在尝试为模式绑定视图创建索引。此视图包含union all运算符和一些联接。如何为该视图创建索引?因为我在使用left join的过程中使用的是视图类型。所以我必须提高表现。

    例如

    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 回复  |  直到 7 年前
        1
  •  1
  •   Dan Guzman    7 年前

    问题不在于 SCHEMABINDING 但是因为 UNION ALL 在索引视图中不允许。我希望错误信息能够清楚地说明这一点。看到了吗 the documentation for index view requirements

    还有,为什么要索引这个视图?假设基础表上有一个唯一的非聚集索引,我不希望索引视图能显著提高性能 prodid prodname

        2
  •  0
  •   ShaiEitan    7 年前

    你不能在一个视图上创建一个使用联合操作符的索引,我不认为有任何方法。