查询和视图的比较
由于查询和视图有如此多的相似性,所以很容易忽略它们之间的差异。本节对查询和视图做一个简单的比较。
存储 视图存储为数据库设计的一部分,而查询则不是。当设计数据库时,可以出于下列原因将视图包括在设计中:
许多用户对数据的某些子集感兴趣。 由于每个视图均存储在数据库中,视图将建立可由任何数据库用户使用的特定数据子集。
视图可以隐藏基表。 您可以禁止所有用户访问数据库表,从而用户只能通过视图来操作数据。这种方法可以保护用户和应用程序不受某些数据库修改的影响。例如,可以创建一个名为“本月销售额”的视图。在每月的第一天,可以相应地修改视图的定义。如果没有这样的视图,用户将每月都必须重新编写查询以选择相应月份的销售额行。
更新结果 对于视图和查询,结果集的更新限制是不同的。有关更多信息,请参见 更新结果的规则。
排序结果 (仅限 Microsoft SQL Server)可以对任何查询结果进行排序,但是只有当视图包括TOP 子句时才能对视图排序。有关 TOP 子句的更多信息,请参见 SQL Server 文档。有关排序的更多信息,请参见 对查询结果进行排序和分组。
生成查询计划 查询计划是一种内部策略,数据库服务器通过它尝试快速创建结果集。数据库服务器可以在保存视图后立即为视图建立查询计划。但是对于查询,数据库服务器直到查询实际运行时(也就是说,直到用户显式请求结果集时)才能建立查询计划。
参数化 可以为查询创建参数,但不能为视图创建参数。有关参数化查询的更多信息,请参见 使用参数查询。