如何在给视图添加索引?

douer2002 2003-04-02 03:59:20
如何在给视图添加索引?
...全文
9692 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rlx 2003-04-05
  • 打赏
  • 举报
回复
up
douer2002 2003-04-05
  • 打赏
  • 举报
回复
top!
w_rose 2003-04-05
  • 打赏
  • 举报
回复
“在视图引用的基本表上加索引不可以吗?”其实这个与索引视图的要领无关。

你“给基本表建立了索引,然后为一些常用的查询建立视图,然后给这些视图建立索引”,这是一个进化的过程,使得在复杂性提高时仍然保持较高的查询效率。
w_rose 2003-04-05
  • 打赏
  • 举报
回复
如果你从一个视图中查询一些结果需要10分钟,那么你从索引过的同一视图中查寻可能只需要10秒钟,这就是“索引”视图的好处。他相当于自动给你建立和维护了堆触发器。当然,还兼有普通视图的能够“从视图更新基本表”的好处。
tjan 2003-04-03
  • 打赏
  • 举报
回复
也可以的
一般来讲,视图索引对静态视图的效果最好
douer2002 2003-04-03
  • 打赏
  • 举报
回复
在视图引用的基本表上加索引不可以吗?
我很关注!
vbasten 2003-04-03
  • 打赏
  • 举报
回复
在视图引用的基本表上加索引不可以吗?
douer2002 2003-04-03
  • 打赏
  • 举报
回复
这么复杂啊
douer2002 2003-04-03
  • 打赏
  • 举报
回复
这么负责阿
tjan 2003-04-02
  • 打赏
  • 举报
回复
可以!
在视图上创建聚集索引之前,该视图必须满足下列要求:

当执行 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(SomeColumn)。如果视图选择列表包含表达式 SUM(SomeColumn) 和 COUNT_BIG(SomeColumn),则 SQL Server 可为引用视图并指定 AVG(SomeColumn) 的查询计算平均数。

引用可为空的表达式的 SUM 函数。


全文谓词 CONTAINS 或 FREETEXT。


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


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


通过一个既可以取值为 float 值也可以使用 float 表达式求值的表达式而生成的列不能作为索引视图或表的索引的键。
愉快的登山者 2003-04-02
  • 打赏
  • 举报
回复
不能在视图上建立索引。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧