MSSQL 视图索引简介


视图简介 索引简介 索引视图 简介

视图简介:视图是一条sql查询语句,利用这条sql语句,可以简化查询,视图本身不占用DB服务器数据空间,在查阅视图时,才进行相关查询操作
索引简介:索引为加快数据查询,根据一定的排序规则建立的数据存储结构,索引缓存数据包含某些列和rowId列
索引视图简介:

如果视图中 返回多行结果集时,并且这些结果集中存在计算列时,
此时我们可以通过在视图上建立索引,来达到视图数据的缓存来加快视图的展示速度。



索引视图举例简介

例:

 
 CREATE VIEW vw_DetailQtySum
    AS
     SELECT
      shopId,
      count(1) as shopCount,
      sum(qty) as shopQtyAll
      from  detail
	  group by shopId 

上面的视图,是我们对一张表按shopid汇总数据,
当我们查看视图时,我们像使用普通sql脚本一样运行操作

select * from  vw_DetailQtySum 


此时如果我们对视图 vw_DetailQtySum 创建索引时,系统会提示,
消息 1939,级别 16,状态 1,第 1 行
无法对视图 ‘*******’ 创建 索引,因为该视图未绑定到架构。
————————————————————
绑定架构时,注意【表名、视图名】 需使用 架构名称 dbo


下文将讲述,创建一个绑定架构的视图,使其可以创建索引

   CREATE VIEW dbo.vw_DetailQtySum 
     WITH SCHEMABINDING
    AS
     SELECT
      shopId,
      count(1) as shopCount,
      sum(qty) as shopQtyAll
      from  dbo.detail
	  group by shopId 
	  go


下一步,对视图创建索引,视图必须 创建一个唯一的聚集索引

 create unique clustered index ix_vw_detailQtySum on 
 vw_detailQtySum (accId)
 go

视图索引使用:
在视图查询中需使用视图索引,必须加入 with(noexpand) 关键字查询,索引才会起到相应的作用,如下所示:

 select * from  vw_DetailQtySum with(noexpand) where shopId ='test'
 go