创建视图索引
Posted 梨窝★浅笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建视图索引相关的知识,希望对你有一定的参考价值。
创建视图索引需要注意哪些事项
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 * 这样的语句,所有字段都必须显示指定
以上是关于创建视图索引的主要内容,如果未能解决你的问题,请参考以下文章