查询和视图的比较

由于查询和视图有如此多的相似性,所以很容易忽略它们之间的差异。 本节对查询和视图做一个简单的比较。

存储 视图存储为数据库设计的一部分,而查询则不是。 当设计数据库时,可以出于下列原因将视图包括在设计中:

  • 许多用户对数据的某些子集感兴趣。   由于每个视图均存储在数据库中,视图将建立可由任何数据库用户使用的特定数据子集。

  • 视图可以隐藏基表。 您可以禁止所有用户访问数据库表,从而用户只能通过视图来操作数据。 这种方法可以保护用户和应用程序不受某些数据库修改的影响。 例如,可以创建一个名为“本月销售额”的视图。在每月的第一天,可以相应地修改视图的定义。 如果没有这样的视图,用户将每月都必须重新编写查询以选择相应月份的销售额行。

更新结果 对于视图和查询,结果集的更新限制是不同的。 有关更多信息,请参见 更新结果的规则

排序结果   (仅限 Microsoft SQL Server)可以对任何查询结果进行排序,但是只有当视图包括TOP 子句时才能对视图排序。 有关 TOP 子句的更多信息,请参见 SQL Server 文档。 有关排序的更多信息,请参见 对查询结果进行排序和分组

生成查询计划 查询计划是一种内部策略,数据库服务器通过它尝试快速创建结果集。 数据库服务器可以在保存视图后立即为视图建立查询计划。 但是对于查询,数据库服务器直到查询实际运行时(也就是说,直到用户显式请求结果集时)才能建立查询计划。

参数化 可以为查询创建参数,但不能为视图创建参数。 有关参数化查询的更多信息,请参见 使用参数查询

请参见

其他资源

设计查询和视图