海妖 发表于 2015-1-16 14:09:00

SQL Server中索引视图用法详解

每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。在上一篇文章,我们解说了SQLServer中视图的一些特性与优化。本章我们解说SQLServer中另外一种特别的视图--索引视图。

关于一般视图的创立与操纵,请参看本站:
SQLServer中视图的特性与优化

在上述的文章中我们讲到,SQLSERVER视图实在就是一段SQL语句,在视图被挪用时静态实行界说的SQL,前往了局集。

在SQLServer2005后,微软推出了索引视图,索引视图与之前的一般视图有一个实质的区分,就是索引视图中的了局集是保留在数据库中的,而不是每次静态实行的了局。如许,查询时就能够像查询基本表一样,功能失掉很多的提拔。我们还能够在索引视图上创立索引,让索引视图的功能失掉进一步提拔。

那末,要怎样建创索引视图呢?我们能够经由过程关头字SchemaBinding来创立,例句以下:
createviewv_salarywithSchemabindingas
selectname,salaryfromdbo.Salary


在创立索引视图的时分,我们要注重以下几点:
1,在索引视图中,不克不及利用*号,必具指定一切了局会合的列名。
我们试图在实在利用*号:
createviewv_ss_salarywithSchemabindingas
select*fromdbo.Salary

报错:在绑定到架构的工具中不同意利用语法*。

2,在索引视图中,一切用到的表前都必需加表所属的架构dbo。
我们试图在表前不加dbo:
createviewv_salarywithSchemabindingas
selectname,salaryfromSalary

报错:没法将视图v_salary绑定到架构,由于称号Salary关于架构绑定有效。称号必需由两部分组成,而且工具不克不及援用本身。

3,在索引视图中不克不及有反复的列(实在在一般视图中也有该限定)
我们试图在视图中创立反复的列:
createviewv_salarywithSchemabindingas
selectname,namefromdbo.Salary

报错:各视图或函数中的列名必需独一。在视图或函数v_salary中屡次指定了列名name。

4,在索引视图中只能创立独一会萃索引。
我们试图在索引视图上创立会萃索引:
createclusteredindexIX_nameonv_salary(name)

报错:没法对视图v_salary创立索引,它没有独一会萃索引

准确的创立语句以下:
createuniqueclusteredindexIX_nameonv_salary(name)


假定v_salary是一般视图,假如我们为它创立索引,会报以下毛病:
没法对视图v_salary创立索引,由于该视图未绑定到架构

删除索引视图:
·删除索引视图的办法与删除一般视图的办法一样,在SQLServerManagementStudio中,选中要删除的视图,点击右键菜单中的"删除"命令便可。
·利用SQL语句删除办法以下:
dropview视图名
如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。

老尸 发表于 2015-1-18 12:14:29

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

飘灵儿 发表于 2015-1-24 16:30:24

连做梦都在想页面结构是怎么样的,绝非虚言

第二个灵魂 发表于 2015-2-2 11:10:07

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

深爱那片海 发表于 2015-2-7 18:45:28

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

不帅 发表于 2015-2-23 01:44:34

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

只想知道 发表于 2015-3-7 07:00:03

连做梦都在想页面结构是怎么样的,绝非虚言

小妖女 发表于 2015-3-14 16:02:26

所以你总能得到相应的升级版本,来满足你的需求。

莫相离 发表于 2015-3-21 12:35:03

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
页: [1]
查看完整版本: SQL Server中索引视图用法详解