什么是索引视图?

0
已邀请:
0

戴俊青 - 微软数据库开发和性能调优 2013-07-31 回答

SQL SERVER中的视图如果没有创建索引的话,值保存SELECT语句,并不保存SELECT所查找出来的数据。每当查询的时候,视图只是执行相关的SELECT语句来进一步查询底层的表。
当我们在视图上创建一个唯一的聚集索引后,视图的数据在磁盘实物化,这样就成了索引视图,简单的讲,就是在视图上创建聚集索引。在创建完聚集索引后,该视图所查找的数据立即被实物化保存存储在了磁盘上,从而在查找执行期间节约了很大的开销,当在索引视图创建后,我们可以在索引视图上创建多个非聚集索引。
有点:
1、 当查询有聚合运算的时候,可以预先保存在索引视图上,这样避免了多次查询,多次聚合运算的开销。
2、 多表连接后的结果集可以预先报留在索引视图中。
弊端:
1、 基本表上的修改必须执行的视图SELECT语句反映到索引视图中。
2、 对索引视图的定义的基本表上的任何修改都可能引起索引视图的非聚集索引的修改
3、 索引视图增加数据库的维护开销
4、 数据库需要更多的存储空
创建索引视图的限制:
1、 视图的第一个索引必须是唯一聚集索引
2、 索引视图上的非聚集索引必须在唯一聚集索引创建后创建
3、 索引视图只能引用相同数据库中的基本表,不能是其他视图。
4、 索引视图可以包含浮点列,但是这种列不能包含在聚集索引键中

要回复问题请先登录注册