Oracle中的视图和实例化视图之间有什么区别?

隐身守侯 提交于 2020-03-08 14:10:50

Oracle中的视图和实例化视图之间有什么区别?


#1楼

物化视图 -磁盘上包含查询结果集的表

非标准化视图 -从基础表中提取数据的查询


#2楼

在Mike McAllister的漂亮回答中加了...

当编译器认为视图查询很简单时,只能将实例化视图设置为通过数据库自动刷新以检测更改。 如果认为它太复杂,它将无法设置本质上是内部触发器的组件来跟踪源表中的更改,从而仅更新mview表中的更改行。

创建实例化视图时,您会发现Oracle同时创建了mview 和具有相同名称的表 ,这会使事情变得混乱。


#3楼

视图:视图只是一个命名查询。 它不存储任何内容。 视图上存在查询时,它将运行视图定义的查询。 实际数据来自表。

物化视图:物理存储数据并定期更新。 查询MV时,它会提供MV中的数据。


#4楼

物化视图是由选择查询驱动的数据逻辑视图,但是查询结果将存储在表或磁盘中,查询的定义也将存储在数据库中。

物化视图的性能优于普通视图,因为物化视图的数据将存储在表中,并且表可能会被索引,因此连接速度更快,并且在物化视图刷新时也会进行连接,因此无需每次触发连接语句,视情况而定。

其他区别包括:在使用View的情况下,我们总是获取最新数据,但是在实现视图的情况下,我们需要刷新视图以获取最新数据。 在实例化视图的情况下,我们需要额外的触发器或某种自动方法,以便我们可以保持MV的刷新,而数据库中的视图则不需要这样做。


#5楼

物化视图基于磁盘,并根据查询定义定期更新。

视图仅是虚拟的,每次访问时都运行查询定义。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!