SQL中视图和物化视图的区别
任何数据库的主要组成部分都是其表,为了使数据访问性更加自定义,有视图的概念,换句话说,我们可以通过表的视图来限制任何用户只能访问他应该访问的数据。 现在基于视图的特性和特点,我们可以区分视图和物化视图。
在本文中,我们将讨论SQL中视图和物化视图之间的重要区别。但是,在此之前,让我们分别查看视图和物化视图的基础知识,以更好地理解它们之间的区别。
阅读更多:MySQL 教程
SQL中的视图
视图 是通过执行“select查询”语句创建的表的逻辑和虚拟副本。 视图不存储在磁盘上的任何位置。 因此,每次需要执行查询时,会查询表达式存储在磁盘上。
视图没有与其相关的存储/更新成本。 视图设计有一种特定的体系结构,这意味着有一个SQL标准来定义视图。 当数据需要不经常访问但数据经常更新时使用视图。
SQL中的物化视图
物化视图 是计算和存储其内容的视图。 物化视图也是逻辑虚拟表,但在这种情况下,查询结果存储在表格或磁盘中。 物化视图的性能优于普通视图。 这是因为数据存储在磁盘上。
有时,物化视图也称为“索引视图”,因为查询后创建的表格已索引,可以更快,更有效地访问。当需要频繁访问数据且表中的数据不经常更新时使用物化视图。
SQL中视图和物化视图的区别
以下表格突出了视图和物化视图之间的重要区别 –
键 | 查看次数 | 材料化视图 |
---|---|---|
定义 | 从技术上讲,表的视图是通过“select查询”创建的逻辑虚拟副本,但结果并不存储在磁盘上。 | |
每当我们需要数据时,我们需要触发查询。因此,用户始终从原始表中获取更新或最新的数据。 | 材料化视图也是由“select查询”驱动的逻辑虚拟数据副本,但查询的结果将存储在表或磁盘中。 | |
存储 | 在视图中,查询表达式的结果元组并没有存储在磁盘上,只有查询表达式存储在磁盘上。 | 在材料化视图中,查询表达式和查询结果的结果元组都存储在磁盘上。 |
查询执行 | 查询表达式存储在磁盘上而不是其结果,因此每次当用户尝试从中获取数据时,查询表达式都会被执行,以便用户每次都能得到最新更新的值。 | 查询的结果存储在磁盘上,因此查询表达式不会在用户尝试获取数据时每次执行,因此如果数据库中发生更改,则用户将无法获得最新的更新值。 |
成本效益 | 由于视图没有任何与其相关的存储成本,因此它们也没有任何更新成本。 | 材料化视图有与之相关的存储成本,因此也有与之相关的更新成本。 |
设计 | 在SQL中的视图是采用固定架构方法设计的,因此定义视图有SQL标准。 | 在SQL中的材料化视图采用通用架构方法设计,因此没有SQL定义它的标准,并且某些数据库系统将其作为扩展提供功能。 |
使用 | 当数据很少访问且表中的数据经常更新时,通常使用视图。 | 当数据经常被访问且表中的数据不经常更新时,则使用材料化视图。 |
结论
SQL中的视图和材料化视图非常不同。当数据很少访问且表中的数据经常更新时,通常使用视图。相反,当经常访问数据且表中的数据不经常更新时,则使用材料化视图。