SQL中视图和物化视图的区别

SQL中视图和物化视图的区别

视图

视图是充当实际关系的虚拟关系。它不是数据库系统逻辑关系模型的一部分。视图的元组不存储在数据库系统中,每次访问视图时都会生成视图的元组。视图的查询表达式存储在数据库系统中。
如果我们可以使用实际的关系,则可以在任何地方使用视图。视图可用于根据特定用户的需要创建自定义虚拟关系。我们可以在数据库系统中创建任意数量的视图。

物化视图

当视图表达式的结果存储在数据库系统中时,它们被称为物化视图。SQL 没有提供任何定义物化视图的标准方法,但是一些数据库管理系统提供了自定义扩展来使用物化视图。保持物化视图更新的过程称为视图维护。
数据库系统使用以下三种方式之一来保持物化视图的更新:

  • 一旦定义它的关系更新,就立即更新物化视图。
  • 每次访问视图时更新物化视图。
  • 定期更新物化视图。

当视图被频繁访问时,物化视图很有用,因为它节省了计算时间,因为结果预先存储在数据库中。在定义视图的关系非常大并且视图的结果关系非常小的情况下,物化视图也很有帮助。物化视图具有与之相关的存储成本和更新开销。

视图和物化视图的区别

视图 物化视图
查询表达式存储在数据库系统中,而不是查询表达式的结果元组。 查询表达式的结果元组存储在数据库系统中。
每次更新定义视图的关系时都不需要更新视图,因为每次访问视图时都会计算视图的元组。 当元组存储在数据库系统中时,物化视图会更新。它可以根据上述数据库系统以三种方式之一进行更新。
视图没有任何与之相关的存储成本。 物化视图确实有与之相关的存储成本。
视图没有任何与之相关的更新成本。 物化视图确实有与之相关的更新成本。
有一个定义视图的 SQL 标准。 没有用于定义物化视图的 SQL 标准,并且该功能由一些数据库系统作为扩展提供。
当不经常访问视图时,视图很有用。 当视图被频繁访问时,物化视图是有效的,因为它通过预先存储结果来节省计算时间。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程