Microsoft SQL Server 2005技术内幕_第5章-视图 Views
Microsoft SQL Server 2005技术内幕:T-SQL程序设计
第5章 视图 Views 本章内容:
5.1 什么是视图? 181 5.2 视图中的ORDER BY 183 5.3 刷新视图 187 5.4 模块化方法 189 5.5 更新视图 198 5.6 视图选项 202
5.7 索引视图(Indexed View) 206 5.8 结论 211
本章首先简单地描述视图及其用法。随后,我将讨论使用视图时的一些细节。此外,我还会介绍如何利用视图简化查询以及利用索引视图提高数据库的性能。
5.1 什么是视图?
视图是一个命名的虚拟表(virtual table),它由一个查询来定义,可以当作表使用。与持久表(permanent table)不同的是,视图中的数据没有物理表现形式,除非你为其创建索引。当你在一个未建索引的视图执行查询时,SQL Server实际访问的是基础表(underlying table)。除非特别说明,本章的讨论都是指的未建索引的视图。
如果你要创建一个视图,为其指定一个名称和一个查询即可。Microsoft SQL Server只保存视图的元数据(metadata),用于描述这个对象,以及它所包含的列、安全、依赖等。当你查询视图时,无论是获取数据还是修改数据,查询处理器(query processor)都会用视图定义代替视图引用。也就是说,查询处理器展开视图定义并生成访问基对象(underlying objects)的执行计划。
视图在数据库中发挥着重要的作用。视图的重要用途之一便是被用作一个抽象装置(abstraction mechanism)。例如,在适当时利用视图你可以很容易地为基础数据提供或多或少的规范化映像(normalized picture),这样就不用更改实际数据的规范化(normalization)。通过应用模块化的方法(逐步解决复杂问题),可以简化解决方案。可以利用视图访问经过筛选和处理的数据,而不是直接对基表(base table)进行操作(让视图的架构和基对象的架构相同),可以把视图作为一个安全层(security layer)(在一定程度上)。
如果在视图上创建索引,它在提高性能方面也发挥着重要作用。在视图上创建聚集索引(clustered index)会让它的数据真正地保存在磁盘上,而不再是虚拟的数据。我会在本章专门用一节介绍索引视图。现在,我们先来关注没有索引的视图,它们通常没有特定的性能影响,包括消极的或积极的。
1