博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server中索引视图用法详解
阅读量:4574 次
发布时间:2019-06-08

本文共 1294 字,大约阅读时间需要 4 分钟。

 

在上述的文章中我们讲到,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

你可能感兴趣的文章
查找元素在list中的位置以及折半查询
查看>>
DWZ (JUI) 教程 table 排序
查看>>
9-蓝桥杯-基础练习-01字串-java
查看>>
使用 GCC 调试程序
查看>>
groupId和artifactId
查看>>
林克卡特树
查看>>
android presentation
查看>>
数据结构(莫队算法):HH的项链
查看>>
Python Counter class
查看>>
关于UIImage类的对象两种初始化方法的区别
查看>>
子网掩码
查看>>
ZooKeeper 笔记(2) 监听数据变化
查看>>
@ApiParam @RequestParam @PathVariable 用法
查看>>
duplicate symbol _OBJC_METACLASS_$_EMHostModel in:
查看>>
【学车】学车笔记-科目二
查看>>
JavaScript数组常用的方法
查看>>
js各种宽高的理解
查看>>
ThinkPHP基础-2
查看>>
一步一步学Linq to sql(四):查询句法
查看>>
[USACO10MAR]伟大的奶牛聚集Great Cow Gat…【树形dp】By cellur925
查看>>