Oracle中的视图和物化视图有什么区别?
当前回答
物化视图是由选择查询驱动的数据的逻辑视图,但查询的结果将存储在表或磁盘中,查询的定义也将存储在数据库中。
实体化视图的性能比普通视图好,因为实体化视图的数据将存储在表中,表可以被索引,因此连接更快,连接是在实体化视图刷新时完成的,因此不需要每次都像视图那样触发连接语句。
其他不同之处在于,在视图中,我们总是获得最新数据,但在物化视图中,我们需要刷新视图以获得最新数据。 在物化视图的情况下,我们需要一个额外的触发器或一些自动方法,以便我们可以保持MV刷新,这对于数据库中的视图是不需要的。
其他回答
再加上迈克·麦卡利斯特相当彻底的回答……
物化视图只能设置为在编译器认为视图查询简单时,通过数据库检测更改来自动刷新。如果它被认为太复杂,它将无法设置本质上是内部触发器来跟踪源表中的更改,从而仅更新mview表中已更改的行。
在创建物化视图时,您会发现Oracle将mview和表都创建为同名的表,这可能会让人感到困惑。
物化视图是基于磁盘的,并根据查询定义定期更新。
视图仅为虚拟视图,并且在每次访问视图时运行查询定义。
物化视图是由选择查询驱动的数据的逻辑视图,但查询的结果将存储在表或磁盘中,查询的定义也将存储在数据库中。
实体化视图的性能比普通视图好,因为实体化视图的数据将存储在表中,表可以被索引,因此连接更快,连接是在实体化视图刷新时完成的,因此不需要每次都像视图那样触发连接语句。
其他不同之处在于,在视图中,我们总是获得最新数据,但在物化视图中,我们需要刷新视图以获得最新数据。 在物化视图的情况下,我们需要一个额外的触发器或一些自动方法,以便我们可以保持MV刷新,这对于数据库中的视图是不需要的。
物化视图—磁盘上的一个表,其中包含查询的结果集
非物化视图——从底层表中提取数据的查询
视图:视图只是一个命名查询。它不存储任何东西。当视图上有查询时,它将运行对视图定义的查询。实际数据来自表格。
物化视图:物理存储数据并定期更新。在查询MV时,给出MV的数据。
推荐文章
- 如何从命令行通过mysql运行一个查询?
- 外键约束可能导致循环或多条级联路径?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N
- ORA-12505, TNS:监听器当前不知道连接描述符中给定的SID
- 货币应该使用哪种数据类型?
- 如何选择每一行的列值不是独特的
- 如何改变字符集(和排序)在整个数据库?
- mySQL:: insert到表,数据从另一个表?
- Android:为什么视图没有maxHeight ?
- 如何在Postgres中获得两个字段的MIN() ?
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- SQL在Oracle中连接多行列值的查询