通过 SQL Server 2005 索引视图提高性能(6)

其他要求

可索引的视图集合是可能的视图集合的一个子集。任何可索引的视图在有或没有索引的情况下都可存在。

除了设计方针(“使用 SET 选项获得一致的结果”和“使用具有确定性的函数”这两节)中所列的要求外,还必须满足下列要求,以便在视图上创建唯一的聚集索引。

有关基表的要求

视图所引用的基表必须具有在创建表时所设的 SET 选项 ANSI_NULLS 的正确的值。可用 OBJECTPROPERTY 函数检查现有表上的 ANSI_NULLS 的值。

有关函数的要求

必须使用 WITH SCHEMABINDING 选项创建视图所引用的用户定义的函数。

有关视图的要求

必须使用 WITH SCHEMABINDING 选项创建视图。

必须由使用双结构名称 (schemaname.tablename) 的视图引用表。

必须由使用双结构名称 (schemaname.functionname) 的视图引用用户定义的函数。

必须正确设置 SET 选项 ANSI_NULLS 和 QUOTED_IDENTIFIER。

视图限制

如要在 SQL Server 2005 中的视图上创建一个索引,相应的视图定义必须包含:

ANY、NOT ANY

OPENROWSET、OPENQUERY、OPENDATASOURCE

不精确的(浮型、实型)值上的算术

OPENXML

COMPUTE、COMPUTE BY

ORDER BY

CONVERT 生成一个不精确的结果

OUTER 联接

COUNT(*)

引用带有一个已禁用的聚集索引的基表

GROUP BY ALL

引用不同数据库中的表或函数

派生的表(FROM 列表中的子查询)

引用另一个视图

DISTINCT

ROWSET 函数

EXISTS、NOT EXISTS

自联接

聚合结果(比如:SUM(x)+SUM(x))上的表达式

STDEV、STDEVP、VAR、VARP、AVG

全文谓词 (CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE)

子查询

不精确的常量(比如:2.34e5)

可为空的表达式上的 SUM

内嵌或表值函数

表提示(比如:NOLOCK)

MIN、MAX

text、ntext、image、filestream 或 XML 列

不具有确定性的表达式

TOP

非 unicode 排序

UNION

SQL Server 2005 可检测到的矛盾情况表示视图将为空(比如,当 0=1 及 ...)

 

注意 索引视图可能包含浮型和实型列;但是,如果这类列为非永久性的计算列,则不能包含在聚集索引键中。

GROUP BY 限制

如果存在 GROUP BY,VIEW 定义为:

一定包含 COUNT_BIG(*)。

一定不包含 HAVING、CUBE、ROLLUP 或 GROUPING()。

这些限制仅适用于索引视图定义。即便不能满足上述 GROUP BY 限制,查询也可以在其执行计划中使用索引视图。

有关索引的要求

执行 CREATE INDEX 语句的用户必须是视图所有者。

如果视图定义包含 GROUP BY 子句,唯一的聚集索引的键只能引用 GROUP BY 子句所指定的列。

一定不能在启用 IGNORE_DUP_KEY 选项的情况下创建索引。

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z