前言
这个话题我本来是写在文章里没有写在随笔里的,不过赶脚不写在随笔里其他人就看不到了,因为小弟对视图的认识不深
希望写在随笔里让大家也讨论一下这个话题
小弟在文章的结尾会把我们公司系统使用索引视图的情况告诉大家,希望大家也把你们在系统中如何应用索引视图的在评论中分享一下
让小弟也学习一下,因为小弟对于索引视图的认识也是比较浅的
视图的种类
先来看一下SQLSERVER中视图的种类
1、标准视图
2、索引视图:加了索引,在SQL2000之后提供的新功能。在视图上创建索引后,该视图的结果集随机被具体化,并保存在数据库的物理存储中。
对索引视图创建的第一个索引必须是唯一聚集索引。创建了唯一聚集索引后,才可以创建其他非聚集索引。如果删除视图,该视图的索引也被删除,
若删除聚集索引,视图的所有非聚集索引和自动创建的统计信息也被删除。删除视图的聚集索引将删除存储的结果集,并且索引视图会变为标准视图
3、分区视图:在一台或多台服务器间水平连接一组成员表中的分区数据,使数据看起来像来自一个表。依据连接数据服务器的不同,
他又分为本地分区视图和分布式分区视图。分布式分区视图用于实现数据库服务器联合
验证
为了区分标准视图和索引视图,我们分别建立一张基本表、一个索引视图、一个标准视图,两个视图都是基于那个基本表
使用下面SQL语句建立测试环境
1 USE [pratice] 2 GO 3 4 --建表 5 CREATE TABLE [dbo].[Users]( 6 [UserID] [int] IDENTITY(1,1) NOT NULL, 7 [UserName] [nvarchar](50) NULL, 8 [Age] [int] NULL, 9 [Gender] [bit] NULL, 10 [CreateTime] [datetime] NULL 11 ) ON [PRIMARY] 12 GO 13 14 --插入数据 15 INSERT INTO [dbo].[Users] ( [UserName], [Age], [Gender], [CreateTime] ) 16 SELECT '啊文',20,1,'2012-05-01' UNION ALL 17 SELECT '宝文',23,0,'2012-05-05' UNION ALL 18 SELECT '张武',38,1,'2012-05-04' UNION ALL 19 SELECT '刘星',32,0,'2012-05-08' UNION ALL 20 SELECT '小青',27,1,'2012-06-01' UNION ALL 21 SELECT '王八',16,1,'2012-07-08' UNION ALL 22 SELECT '臭屁',42,1,'2012-09-02' 23 GO 24 25 SELECT * FROM [dbo].[Users] 26 GO 27 28 -------------------------------------------------------- 29 --创建索引视图 30 CREATE VIEW index_View_Users 31 WITH SCHEMABINDING 32 AS 33 SELECT UserID,UserName,Age,Gender,CreateTime FROM dbo.Users 34 GO 35 36 CREATE UNIQUE CLUSTERED INDEX CIX_View_Users ON index_View_Users(UserID) 37 38 SELECT * FROM index_View_Users 39 40 41 --创建标准视图 42 CREATE VIEW stand_View_Users 43 AS 44 SELECT UserID,UserName,Age,Gender,CreateTime FROM dbo.Users 45 GO 46 47 SELECT * FROM stand_View_Users 48 49 50 ---------------------------------------------------------