它们评估视图定义 at the time the view is queried 下面的表中的数据 . 它是表的逻辑视图,没有其他地方存储数据 .
一种观点的好处是它将 always return the latest data to you . downside of a view is that its performance 取决于视图所基于的select语句的好坏程度 . 如果视图使用的select语句连接许多表,或者使用基于非索引列的连接,则视图可能表现不佳 .
物化视图
它们与常规视图类似,因为它们是数据的逻辑视图(基于select语句),但是, underlying query result set has been saved to a table . 这样做的好处是,当您查询实体化视图时, you are querying a table 也可以被索引 .
此外,由于所有连接都已在物化视图刷新时解决,因此您需要支付连接的价格(或者在刷新实体化视图时),而不是每次从实体化视图中选择 . 此外,通过启用查询重写,Oracle可以优化从物化视图源中进行选择的查询,使其从物化视图中读取 . 在将实体化视图创建为聚合表的形式或作为频繁执行的查询的副本的情况下,这可以大大加快最终用户应用程序的响应时间 . downside though is that the data you get back from the materialized view is only as up to date as the last time the materialized view has been refreshed .
物化视图可以设置为手动刷新,按设定的时间表,或基于数据库检测来自其中一个基础表的数据更改 . 物化视图可以通过将它们与物化视图日志(基础表上的 act as change data capture sources )组合来逐步更新 .
8 回答
物化视图基于磁盘,并根据查询定义定期更新 .
视图是虚拟的,每次访问时都会运行查询定义 .
意见
它们评估视图定义 at the time the view is queried 下面的表中的数据 . 它是表的逻辑视图,没有其他地方存储数据 .
一种观点的好处是它将 always return the latest data to you . downside of a view is that its performance 取决于视图所基于的select语句的好坏程度 . 如果视图使用的select语句连接许多表,或者使用基于非索引列的连接,则视图可能表现不佳 .
物化视图
它们与常规视图类似,因为它们是数据的逻辑视图(基于select语句),但是, underlying query result set has been saved to a table . 这样做的好处是,当您查询实体化视图时, you are querying a table 也可以被索引 .
此外,由于所有连接都已在物化视图刷新时解决,因此您需要支付连接的价格(或者在刷新实体化视图时),而不是每次从实体化视图中选择 . 此外,通过启用查询重写,Oracle可以优化从物化视图源中进行选择的查询,使其从物化视图中读取 . 在将实体化视图创建为聚合表的形式或作为频繁执行的查询的副本的情况下,这可以大大加快最终用户应用程序的响应时间 . downside though is that the data you get back from the materialized view is only as up to date as the last time the materialized view has been refreshed .
物化视图可以设置为手动刷新,按设定的时间表,或基于数据库检测来自其中一个基础表的数据更改 . 物化视图可以通过将它们与物化视图日志(基础表上的 act as change data capture sources )组合来逐步更新 .
物化视图最常用于数据仓库/商业智能应用程序,其中查询具有数千万行的大型事实表将导致查询响应时间,从而导致应用程序无法使用 .
物化视图也有助于保证一致的时刻,类似于snapshot isolation .
视图使用查询从基础表中提取数据 .
物化视图是磁盘上包含查询结果集的表 .
物化视图主要用于在不可行或不希望使用应用了索引的标准视图时提高应用程序性能 . 物化视图可以通过触发器或使用
ON COMMIT REFRESH
选项定期更新 . 这确实需要一些额外的权限,但这并不复杂 .ON COMMIT REFRESH
至少从Oracle 10开始就已经存在 .视图本质上是由给定查询即时填充的逻辑表格式结构 . 视图查询的结果不会存储在磁盘上的任何位置,并且每次执行查询时都会重新创建视图 . 物化视图是存储在数据库中并写入磁盘的实际结构 . 它们根据创建时定义的参数进行更新 .
Materialised view - 磁盘上包含查询结果集的表
Non-materiased view - 从基础表中提取数据的查询
View: 视图只是一个命名查询 . 它不存储任何东西 . 当对视图有查询时,它会运行视图定义的查询 . 实际数据来自表格 .
Materialised views: 物理存储数据并定期更新 . 在查询MV时,它会从MV中提供数据 .
加上Mike McAllister非常彻底的回答......
物化视图只能设置为在编译器将视图查询视为 simple 时通过检测更改的数据库自动刷新 . 如果's considered too complex, it won'能够设置基本上内部触发器来跟踪源表中的更改,以仅更新mview表中更改的行 .
当您创建物化视图时,您会发现Oracle同时创建了mview and as a table with the same name ,这会让事情变得混乱 .
view 只是一个SQL查询,获取查询的输出并使其看起来像一个虚拟表,它不占用任何存储空间或包含任何数据
但是 Materialised views 是模式对象,它将查询结果存储在单独的模式对象中(即占用存储空间并包含数据) . 这表示物化视图返回表数据的物理分离副本