视图


大家应用视图无疑是简化了SQL查询,由于视图的重用性类似于自定义函数,所以很多人相对喜欢应用视图,但是应用视图简化了SQL却没有任何执行性能的提升,而且还带来维护。

于是大家又开始研究索引视图的可用性了。

个人把视图理解编译过的SQL执行计划,索引视图为实物化的类表,还包含索引结构。
就如大家理解表的索引一样,索引视图同样会提升查询效率,但是索引维护、数据写等代价也随之增加。

创建索引视图
1、选项设置:
    SET ANSI_NULLS,ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABORT,QUOTED_IDENTIFIER ON
    GO
    SET NUMERIC_ROUNDABORT OFF
    GO
2、绑定架构选项(WITH SCHEMABINDING)
    CREATE VIEW dbo.VIEW_Pqs     WITH SCHEMABINDING
    AS
       select .....
    GO
3、设置唯一的聚集索引
     CREATE  UNIQUE  CLUSTERED  INDEX [IDX_VIEW_Pqs] ON [dbo].[VIEW_PQS]([S_id]) ON [PRIMARY] GO

4、至于SQL的语法有一些限制,比如不能用count(*)之类的(用count_big(*)替换) 。可以查看帮助文档

5、对于索引视图应用到的基表,可能会有数据写错误。
    基本上可以execute sp_dboption 'dbname','ARITHABORT' ,'true'即可(就是修改数据库选项set ARITHABORT on即可)
    当然是对于设置好后新创建的数据写是没有问题的,对于原来已有的需要重新设置选项并编译。

--*******************************************************************************************************
SET选项            要求的值     默认服务器的值     OLE DB和ODBC的值     DB LIB的值
ANSI_NULLS         ON         OFF         ON             OFF
ANSI_PADDING         ON         ON         ON             OFF
ANSI_WARNINGS         ON         OFF         ON             OFF
ARITHABORT         ON         OFF         OFF             OFF
CONCAT_NULL_YIELDS_NULL ON         OFF         ON             OFF
NUMERIC_ROUNDABORT     OFF         OFF         OFF             OFF
QUOTED_IDENTIFIER     ON         OFF         ON             OFF 



原文地址:https://www.cnblogs.com/piaoqingsong/p/790752.html