What is the difference between Views and Materialized Views in Oracle?
Oracle中的视图和物化视图有什么区别?
物化视图基于磁盘,并根据查询定义定期更新。
视图仅为虚拟视图,每次访问它们时都运行查询定义。
意见
它们在查询视图时评估视图定义下的表中的数据。它是表的逻辑视图,没有数据存储在任何其他地方。
视图的好处是它总是将最新的数据返回给您。视图的缺点在于它的性能取决于视图所基于的select语句的好坏。如果视图使用的SELECT语句联接多个表,或使用基于非索引列的联接,则该视图的性能可能很差。
物化视图它们与常规视图类似,因为它们是数据的逻辑视图(基于select语句),但是基础查询结果集已保存到表中。其好处是,当您查询物化视图时,您正在查询一个表,该表也可能被索引。
此外,由于所有联接都是在物化视图刷新时解决的,因此您只需支付一次联接的价格(或在刷新物化视图时支付一次联接的价格),而不是每次从物化视图中选择联接时。此外,在启用了查询重写的情况下,Oracle可以优化从物化视图的源代码中选择的查询,而不是从物化视图中读取。在创建物化视图作为聚合表的形式或作为频繁执行的查询的副本的情况下,这可以大大加快最终用户应用程序的响应时间。但缺点是,从物化视图返回的数据只有在上次刷新物化视图时才是最新的。
具体化视图可以设置为手动刷新、按设置的计划刷新,或者基于数据库检测到某个基础表中的数据更改。物化视图可以通过将其与物化视图日志相结合来增量更新,后者充当底层表上的变更数据捕获源。
物化视图最常用于数据仓库/商务智能应用程序,在这些应用程序中,查询具有成千上万行的大型事实表将导致查询响应时间,从而导致应用程序不可用。
物化视图也有助于确保时间上的一致性,类似于快照隔离。
视图使用查询从基础表中提取数据。
物化视图是磁盘上包含查询结果集的表。
物化视图主要用于在不可行或不希望使用带有索引的标准视图时提高应用程序性能。物化视图可以通过触发器或使用
视图本质上是由给定查询动态填充的逻辑类表结构。视图查询的结果不存储在磁盘上的任何位置,每次执行查询时都会重新创建视图。物化视图是存储在数据库中并写入磁盘的实际结构。它们将根据创建时定义的参数进行更新。
物化视图-磁盘上包含查询结果集的表
非材料视图-从基础表中提取数据的查询
视图:视图只是一个命名查询。它不储存任何东西。当对视图进行查询时,它将运行对视图定义的查询。实际数据来自表。
物化视图:物理存储数据并定期更新。在查询mv时,它提供mv的数据。
视图只不过是一个SQL查询,获取查询的输出并使其看起来像一个虚拟表,它不占用任何存储空间或包含任何数据。
但物化视图是模式对象,它将查询结果存储在单独的模式对象中(即占用存储空间并包含数据)。这表示物化视图正在返回表数据的物理独立副本。
再加上麦克·麦卡利斯特相当彻底的回答…
当编译器认为视图查询很简单时,物化视图只能设置为通过数据库检测更改自动刷新。如果它被认为太复杂,它将无法设置基本上是内部触发器的内容来跟踪源表中的更改,从而只更新mview表中更改的行。
当您创建物化视图时,您会发现Oracle同时创建了mview和一个同名的表,这会使事情变得混乱。