MSSQL

索引视图要注意事项

日期:2015/6/28来源: IT猫扑网

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

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

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

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

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

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

    表和用户定义的函数必须由 2 部分的名称引用。不允许使用 1 部分、3 部分和 4 部分的名称。

    视图中的表达式所引用的所有函数必须是确定性的。OBJECTPROPERTY 函数的 IsDeterministic 属性报告用户定义的函数是否是确定性的。有关更多信息,请参见确定性函数和非确定性函数。

    视图中的 SELECT 语句不能包含下列 Transact-SQL 语法元素:
选择列表不能使用 * 或 table_name.* 语法指定列。必须显式给出列名。

    不能在多个视图列中指定用作简单表达式的表的列名。如果对列的所有(或只有一个例外)引用是复杂表达式的一部分或是函数的一个参数,则可多次引用该列。
派生表。

    行集函数。

    UNION 运算符。

    子查询。

    外联接或自联接。

    TOP 子句。

    ORDER BY 子句。

    DISTINCT 关键字。

    COUNT(*)(允许 COUNT_BIG(*)。)

    avg、MAX、MIN、STDEV、STDEVP、VAR 或 VARP 聚合函数
    引用可为空的表达式的 SUM 函数。

   全文谓词 CONTAINS 或 FREETEXT。

COMPUTE 或 COMPUTE BY 子句。
    如果没有指定 GROUP BY,则视图选择列表不能包含聚合表达式。

    如果指定了 GROUP BY,则视图选择列表必须包含 COUNT_BIG(*) 表达式,并且,视图定义不能指定 HAVING、CUBE 或 ROLLUP。

    通过一个既可以取值为 float 值也可以使用 float 表达式求值的表达式而生成的列不能作为索引视图或表的索引的键。
    在视图上创建的第一个索引必须是唯一聚集索引。在创建唯一聚集索引后,可创建其它非聚集索引。

相关文章

相关下载

网友评论

我要评论...
    没有更早的评论了
    取消