社区
应用实例
帖子详情
怎么创建视图索引?
jieke2002
2005-09-03 08:58:45
请问怎么创建视图索引?
...全文
2187
4
打赏
收藏
怎么创建视图索引?
请问怎么创建视图索引?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
skylion
2005-09-07
打赏
举报
回复
无法 index 视图 'yxw.dbo.view'。它包含一个或多个不允许使用的构造。
怎么回事?高手解答
vivianfdlpw
2005-09-03
打赏
举报
回复
定义索引视图的 SELECT 语句不得包含 TOP、DISTINCT、COMPUTE、HAVING 和 UNION 关键字。也不能包含子查询。
SELECT 列表中不得包含星号 (*)、'table.*' 通配符列表、DISTINCT、COUNT(*)、COUNT(<expression>)、基表中的计算列和标量聚合。
非聚合 SELECT 列表中不能包含表达式。聚合 SELECT 列表(包含 GROUP BY 的查询)中可能包含 SUM 和 COUNT_BIG(<expression>);它一定包含 COUNT_BIG(*)。不允许有其它聚合函数(MIN、MAX、STDEV,...)。
使用 AVG 的复杂聚合无法参与索引视图的 SELECT 列表。不过,如果查询使用这样的聚合,则优化程序将能使用该索引视图,用 SUM 和 COUNT_BIG 的简单聚合组合代替 AVG。
若某列是从取值为 float 数据类型或使用 float 表达式进行取值的表达式得到的,则不能作为索引视图或表中计算列的索引键。这样的列被视为是不精确的。使用 COLUMNPROPERTY 函数决定特定计算列或视图中的列是否精确。
索引视图受限于以下的附加限制:
索引的创建者必须拥有表。所有表、视图和索引必须在同一数据库中创建。
定义索引视图的 SELECT 语句不得包含视图、行集函数、行内函数或派生表。同一物理表在该语句中只能出现一次。
在任何联接表中,均不允许进行 OUTER JOIN 操作。
搜索条件中不允许使用子查询或者 CONTAINS 或 FREETEXT 谓词。
如果视图定义包含 GROUP BY 子句,则视图的 SELECT 列表中必须包含所有分组依据列及 COUNT_BIG(*) 表达式。此外,CREATE UNIQUE CLUSTERED INDEX 子句中必须只包含这些列。
vivianfdlpw
2005-09-03
打赏
举报
回复
--创建视图
create view v
with schemabinding
as
select ID,name from dbo.A
go
--创建索引
create unique clustered index v_index on v(ID)
vivianfdlpw
2005-09-03
打赏
举报
回复
必须使用 SCHEMABINDING 定义视图才能在视图上创建索引。视图定义也必须具有确定性。如果选择列表中的所有表达式、WHERE 和 GROUP BY 子句都具有确定性,则视图也具有确定性。而且,所有键列必须是精确的。只有视图的非键列可能包含浮点表达式(使用 float 数据类型的表达式),而且 float 表达式不能在视图定义的其它任何位置使用。
若要在确定性视图中查找列,请使用 COLUMNPROPERTY 函数(IsDeterministic 属性)。该函数的 IsPrecise 属性可用来确定键列是否精确。
必须先为视图创建唯一的聚集索引,才能为该视图创建非聚集索引。
指定 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (owner.object)。
不能除去参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑定。否则,SQL Server 会产生错误。另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败
SQLServer数据库实战视频课程
1.数据库的系统需求分析原理及方法详解,数据库的范式...视图的作用,视图分类,
创建视图
,视图的限制,视图的应用; 8.事务处理; 9.存储过程的创建,修改,删除及使用 10.触发器的作用,触发器的类型,触发器的管理
视图上可以创建
索引
吗?
当然,视图是不可以创建
索引
的,此博客只是简单解释下原因。
索引
是要占用存储空间的,也只能创建在占有存储空间的对象上。 永久表和临时表都是占用存储空间,所以可以创建
索引
而视图是select语句的结果集...
视图能创建
索引
吗?---转自百度知道
总之,虽然视图是一种有用的查询工具,但由于其虚拟性,无法在其上直接创建
索引
。视图不包含实际的物理数据,它的数据是从被视图的表中获取的。视图是一种虚拟的表,它是基于一个或多个表的查询结果生成的。视图是一...
sqlserver
创建视图
索引
索引
视图创建注意事项 对视图创建的第一个
索引
必须是唯一聚集
索引
。 创建唯一聚集
索引
后,可以创建更多非聚集
索引
。 为视图创建唯一聚集
索引
可以提高查询性能,因为视图在数据库中的存储方式与具有聚集
索引
的表的...
sql——
创建视图
和
索引
创建视图
:给BILLS表
创建视图
。创建的视图实际上是一个虚表。 CREATE VIEW DEBTS AS SELECT * FROM BILLS; 可以选择特定的行进行新视图的创建。 CREATE VIEW CREDITCARD_DEBTS AS SELECT * FROM DEBTS WHERE ...
应用实例
27,579
社区成员
68,558
社区内容
发帖
与我相关
我的任务
应用实例
MS-SQL Server 应用实例
复制链接
扫一扫
分享
社区描述
MS-SQL Server 应用实例
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章