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 视图名

 

转载于:https://www.cnblogs.com/zxktxj/archive/2012/06/12/2546676.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值