创建视图索引

创建视图索引需要注意哪些事项

1、创建索引时提示该视图未绑定到架构(创建视图时加上schemabinding关键字则不能*号存在索引中)

     解决方法:在创建视图的时候加上schemabinding

     例句:CREATE VIEW [dbo].[viewTable] with schemabinding AS select ID from .....

2、加上schemabinding建立索引的时候又提示必须先创建唯一聚集索引

    解决方法: 在创建视图时加上UNIQUE  CLUSTERED

    例句: CREATE UNIQUE  CLUSTERED index ix_ccount on [viewTable](ID)

3、 如果视图包含一个Group By子句,那么在创建视图的时候select语句中必须包含count_big(*)

     错误信息:无法在视图 'viewTable' 上创建索引,因为该视图的定义中不包括 count_big(*)。

    解决方法:SELECT COUNT_BIG(*) num......

4、视图不能包含一个外部链接或自链接,也就是说在链接表时只能使用INNER JOIN并且INNER JOIN前后不能使同一个表,不能使用LEFT(RIGHT) JOIN 或者 LEFT (RIGHT) OUTER JOIN ;  

    错误信息:无法 index 视图 'KF_BJKQ.dbo.ViewYXHolidayTotal'。它包含一个或多个不允许使用的构造。

    解决方法:把left join 改成inner join

5、视图不允许使用某些集合函数,如:Count(*)可以使用count_big(*)代替、avg()、max()、min()、stdev()、stdevp()、var()或varp()等;

    错误信息:无法在视图 'ViewYXHolidayTotal' 上创建索引,因为该视图的定义中包括未知值(可为空表达式的求和)。

    解决方法:在创建视图的时候把包含上面的函数去掉即可

6、F.视图不能包含UNION子句、TOP子句、ORDER BY子句、Having子句、Rollup子句、Cube子句、compute子句、Compute By子句或Distinct关键字; 

7、视图不能使用select * 这样的语句,所有字段都必须显示指定

 

 

原文地址:https://www.cnblogs.com/starts/p/5284023.html