mssql的视图索引创建

1. 

  • 当执行 CREATE VIEW 语句时,ANSI_NULLS 和 QUOTED_IDENTIFIER 选项必须设置为 ON。OBJECTPROPERTY 函数通过 ExecIsAnsiNullsOn 或 ExecIsQuotedIdentOn 属性为视图报告此信息。

  • 要执行所有 CREATE TABLE 语句以创建视图引用的表,ANSI_NULLS 选项必须设置为 ON。

  • 视图不能引用任何其他视图,只能引用基表。

  • 视图引用的所有基表必须与视图位于同一数据库中,并且所有者也与视图相同。

  • 必须使用 SCHEMABINDING 选项创建视图。架构绑定将视图绑定到基础基表的架构。

  • 必须已使用 SCHEMABINDING 选项创建了视图引用的用户定义函数。

  • 表和用户定义函数必须由视图中由两部分组成的名称引用。不允许由一部分、三部分和四部分组成的名称引用它们。

  • 视图中的表达式引用的所有函数必须是确定的。OBJECTPROPERTY 函数的 IsDeterministic 属性报告用户定义函数是否具有确定性。有关详细信息,请参阅确定性函数和不确定性函数

对视图创建的第一个索引必须是唯一聚集索引。创建唯一聚集索引后,可以创建其他非聚集索引。视图的索引命名约定与表的索引命名约定相同。唯一的区别是表名替换为视图名。有关详细信息,请参阅 CREATE INDEX (Transact-SQL)

CREATE INDEX 除了符合 CREATE INDEX 的常规要求之外,还必须符合下列要求:

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

  • 执行 CREATE INDEX 语句时,下列 SET 选项必须设置为 ON:

    • ANSI_NULLS

    • ANSI_PADDING

    • ANSI_WARNINGS

    • CONCAT_NULL_YIELDS_NULL

    • QUOTED_IDENTIFIER

  • NUMERIC_ROUNDABORT 选项必须设置为 OFF。这是默认设置。

  • 如果数据库在 80 或更低的兼容模式下运行,则 ARITHABORT 选项必须设置为 ON。

  • 创建聚集索引或非聚集索引时,IGNORE_DUP_KEY 选项必须设置为 OFF(默认设置)。

  • 即使 CREATE INDEX 语句中未引用 text、ntext 或 image 列,视图中也不能包含这些列。

  • 如果视图定义中的 SELECT 语句指定了一个 GROUP BY 子句,则唯一聚集索引的键只能引用在 GROUP BY 子句中指定的列。

  • 构成索引键列值的不精确表达式必须引用视图下基表中的存储列。该列可以是常规存储列,也可以是持久化计算列。其他不精确表达式不能作为索引视图的键列的一部分。

posted @ 2018-01-30 14:32  奋斗史  阅读(459)  评论(0)    收藏  举报