SQL中视图和物化视图的区别
任何数据库的主要组成部分都是它的表,为了使数据访问自定义,存在视图的概念,换句话说,借助表的视图,我们可以限制任何用户只能访问他应该访问的数据。现在,根据视图的特性和特征,我们可以区分视图和物化视图。
在本文中,我们将讨论SQL中视图和物化视图之间重要的区别。但在讨论它们的区别之前,让我们先分别了解视图和物化视图的基础知识,以便更好地理解它们之间的区别。
SQL中的视图
视图是表的逻辑虚拟副本,通过执行"SELECT 查询"语句创建。 视图不会存储在磁盘上的任何位置。因此,每次需要某些数据时,都必须执行查询。但是,查询表达式存储在磁盘上。
视图没有与其相关的存储/更新成本。视图采用特定的架构设计,这意味着存在定义视图的SQL标准。当数据需要不频繁访问但频繁更新时,使用视图。
SQL中的物化视图
物化视图是指其内容已计算并存储的视图。物化视图也是逻辑虚拟表,但在这种情况下,查询的结果存储在表或磁盘中。物化视图的性能优于普通视图。这是因为数据存储在磁盘上。
有时,物化视图也称为“索引视图”,因为查询后创建的表已建立索引,可以更快、更高效地访问。当需要频繁访问数据且表中的数据不频繁更新时,使用物化视图。
SQL中视图和物化视图的区别
下表突出显示了视图和物化视图之间重要的区别:
| 关键 | 视图 | 物化视图 |
|---|---|---|
| 定义 | 从技术上讲,表的视图是由“select 查询”创建的表的逻辑虚拟副本,但结果不会存储在磁盘上的任何位置。每当我们需要数据时,都需要执行查询。因此,用户始终从原始表中获取更新或最新的数据。 | 物化视图也是由“select 查询”驱动的数据的逻辑虚拟副本,但查询的结果将存储在表或磁盘中。 |
| 存储 | 在视图中,查询表达式的结果元组不会存储在磁盘上,只有查询表达式存储在磁盘上。 | 对于物化视图,查询表达式和查询的结果元组都存储在磁盘上。 |
| 查询执行 | 查询表达式存储在磁盘上,而不是其结果,因此每次用户尝试从中获取数据时都会执行查询表达式,以便用户每次都能获得最新的更新值。 | 查询的结果存储在磁盘上,因此每次用户尝试获取数据时都不会执行查询表达式,因此如果数据库中的数据发生更改,用户将不会获得最新的更新值。 |
| 成本效益 | 由于视图没有任何与其相关的存储成本,因此也没有任何与其相关的更新成本。 | 物化视图有与其相关的存储成本,因此也有与其相关的更新成本。 |
| 设计 | SQL中的视图采用固定的架构方法设计,因此存在定义视图的SQL标准。 | SQL中的物化视图采用通用的架构方法设计,因此没有定义它的SQL标准,其功能由某些数据库系统作为扩展提供。 |
| 用法 | 通常在需要不频繁访问数据且表中的数据频繁更新时使用视图。 | 通常在需要频繁访问数据且表中的数据不频繁更新时使用物化视图。 |
结论
SQL中的视图和物化视图彼此之间非常不同。当需要不频繁访问数据且表中的数据频繁更新时,使用视图。相反,当需要频繁访问数据且表中的数据不频繁更新时,使用物化视图。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP