视图和实体化视图之间的实际区别是什么?
我浏览了很多链接,他们说普通视图就像一个虚拟表,并且数据无法存储在磁盘上,以防万一实例化的数据将存储在磁盘上。但是从那里我什么也看不到何时使用普通视图和何时使用实体化视图。如果创建了两个视图,则可以在架构中看到它们。我想知道确切的时间和地点,使用普通视图和物化视图。请向我提供实际示例的解决方案。
谢谢
答案 0 :(得分:1)
视图只是存储的查询。这是保存一些复杂的业务逻辑(联接,过滤器,派生值)的便捷方法,以便可以重用并与其他用户共享。
实例化视图也是保存查询的一种方法,但是它实现了结果集。也就是说,它会在磁盘上创建数据的副本。
使用实例化视图的主要原因是提高了性能。每次我们从视图中选择时,我们都会执行整个查询。如果这是一个昂贵的查询,那就是我们每次都要支付的费用。使用实例化视图,我们将磁盘空间换为时间。
此外,我们可以将物化视图视为表格:我们可以为它们建立索引,可以添加键约束,甚至可以在外键中引用它们。
不使用A的主要原因是成本。它们占用磁盘空间。它们也必须维护。默认情况下,实例化视图是静态的,这意味着它们的数据会随着时间的推移逐渐变得陈旧。刷新实例化视图可能很麻烦(取决于基础查询)。查询视图始终可以为我们提供最新的数据视图。
以下仅是准则,既不完整也不独特
何时使用视图
何时使用实例化视图
问题的答案在the documentation(*)中。我无意改写那本精美的手册,但我会解决您的问题,因为从一开始我就被迫继续。
select * from user_extents where segment_name = 'name of mview'
(*)这是Oracle的文档,因为这是您的个人资料所建议的内容,但其他RDBMS平台具有类似的文档。