文档详情

Oracle视图中建立索引注意事项.doc

发布:2017-08-04约6.34千字共4页下载文档
文本预览下载声明
Oracle视图中建立索引的注意事项 在视图上创建索引需要三个条件: 一、视图必须绑定到架构。 要做到这点,在?CREATE?VIEW?语句中,必须加上?WITH?SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中“绑定到架构”。 二、索引必须是唯一索引。 要做到这点,在?CREATE?INDEX?中必须指定?UNIQUE。 三、索引必须是聚集索引。 要做到这点,在?CREATE?INDEX?中必须指定?CLUSTERED。 例: CREATE?VIEW?viewFoo?WITH?SCHEMABINDING AS 在视图上创建聚集索引之前,该视图必须满足下列要求:??? ???? ??当执行?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.*?语法指定列。必须显式给出列名。??? ???? ??不能在多个视图列中指定用作简单表达式的表的列名。如果对列的所有(或只有一个例外)引用是复杂表达式的一部分或是函数的一个参数,则可多次引用该列。例如,下列选择列表是非法的:??? ??SELECT?ColumnA,?ColumnB,?ColumnA??? ???? ??下列选择列表是合法的:??? ???? ??SELECT?ColumnA,?COUNT(ColumnA),?ColumnA?+?Column?B?AS?AddColAColB?FROM?T1??? ???? ??SELECT?SUM(ColumnA),?ColumnA?%?ColumnB?AS?ModuloColAColB,?COUNT_BIG(*)?FROM?T1?GROUP?BY?ColumnA??? ???? ??派生表。???行集函数。???UNION?运算符。???子查询。??外联接或自联接。????TOP?子句。???ORDER?BY?子句。??DISTINCT?关键字。???COUNT(*)(允许?COUNT_BIG(*)。)??AVG、MAX、MIN、STDEV、STDEVP、VAR?或?VARP?聚合函数。如果在引用索引视图的查询中指定?AVG、MAX、MIN、STDEV、STDEVP、VAR?或?VARP,如果视图选择列表包含以下替换函数,则优化器会经常计算需要的结果。?复杂聚合函数?替代简单聚合函数??? ??AVG(X)??? ??SUM(X),?COUNT_BIG(X)??? ??STDEV(X)??? ??SUM(X),?COUNT_BIG(X),?SUM(X**2)??? ??STDEVP(X)??? ??SUM(X),?COUNT_BIG(X),?SUM(X**2)??? ??VAR(X)??? ??SUM(X),?COUNT_BIG(X),?SUM(X**2)??? ??VARP(X)??? ??SUM(X),?COUNT_BIG(X),?SUM(X**2)??? ??例如,索引视图选择列表不能包含表达式?AVG(SomeColumn)。如果视图选择列表包含表达式?SUM(SomeColumn)?和?COUNT_BIG(SomeColumn),则?SQL?Server?可为引用视图并指定?AVG(SomeColumn)?的查询计算平均数。??? ??引用可为空的表达式的?SUM?函数。??? ??
显示全部
相似文档