欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SQLServer教程 » 正文

热门阅读

SQL Server中索引视图用法详解

创建时间:2011年10月13日 22:02  阅读次数:(14291)
分享到:
在上一篇文章,我们讲解了SQL Server中视图的一些特点与优化。本章我们讲解SQL Server中另一种特殊的视图--索引视图

关于普通视图的创建与操作,请参看本站:
SQL Server中视图的特点与优化

在上述的文章中我们讲到,SQL SERVER视图其实就是一段SQL语句,在视图被调用时动态执行定义的SQL,返回结果集。

在SQL Server2005后,微软推出了索引视图,索引视图与之前的普通视图有一个本质的区别,就是索引视图中的结果集是保存在数据库中的,而不是每次动态执行的结果。这样,查询时就可以像查询基础表一样,性能得到不少的提升。我们还可以在索引视图上创建索引,让索引视图的性能得到进一步提升。

那么,要如何建创索引视图呢?我们可以通过关键字SchemaBinding来创建,例句如下:
create view v_salary with Schemabinding as
select name,salary from dbo.Salary


在创建索引视图的时候,我们要注意以下几点:
1,在索引视图中,不能使用*号,必具指定所有结果集中的列名。
我们试图在其实使用*号:
create view v_ss_salary with Schemabinding as 
select * from dbo.Salary

报错:在绑定到架构的对象中不允许使用语法 '*'。

2,在索引视图中,所有用到的表前都必须加表所属的架构dbo。
我们试图在表前不加dbo:
create view v_salary with Schemabinding as 
select name,salary from Salary

报错:无法将 视图'v_salary' 绑定到架构,因为名称'Salary'对于架构绑定无效。名称必须由两部分构成,并且对象不能引用自身。

3,在索引视图中不能有重复的列(其实在普通视图中也有该限制)
我们试图在视图中创建重复的列:
create view v_salary with Schemabinding as 
select name,name from dbo.Salary

报错:各视图或函数中的列名必须唯一。在视图或函数 'v_salary ' 中多次指定了列名 'name'。

4,在索引视图中只能创建唯一聚集索引
我们试图在索引视图上创建聚集索引:
create clustered index IX_name on v_salary(name)

报错:无法对视图'v_salary'创建索引,它没有唯一聚集索引

正确的创建语句如下:
create unique clustered index IX_name on v_salary(name)


假设v_salary是普通视图,如果我们为它创建索引,会报如下错误:
无法对视图v_salary创建索引,因为该视图未绑定到架构

删除索引视图:
·删除索引视图的方法与删除普通视图的方法一样,在SQL Server Management Studio中,选中要删除的视图,点击右键菜单中的"删除"命令即可。
·使用SQL语句删除方法如下:
drop view 视图名
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 82+37=? 的结果(结果是:119)
结  果: