Oracle中的物化视图?

0 sql oracle oracle10g oracle11g

什么是Oracle中的物化视图?有什么用?我在网上搜索了这个主题,但我无法清楚地了解它.那么请您用一个明确的例子来解释这个主题.因此,对我来说,清楚地理解这个主题会更有用.

Jam*_*mes 7

物化视图是RDMS提供的机制,用于交换额外的存储消耗以获得更好的查询性能.

例如,假设您有一个非常大的查询,其中有10个表连接需要很长时间才能返回数据.如果将查询转换为物化视图,则此查询的结果将自动实现到磁盘上的特殊db表中,更好的是,当添加/更新/删除行时,它们会自动反映在物化视图中.

这个方便工具的权衡是对底层表的更慢插入和更新.物化视图是Oracle恕我直言的少数救赎品质之一.

这是两个表连接的示例MATERIALIZED VIEW.

CREATE MATERIALIZED VIEW MV_Test
  NOLOGGING
  CACHE
  BUILD IMMEDIATE 
  REFRESH FAST ON COMMIT 
  AS
    SELECT V.*, P.*, V.ROWID as V_ROWID, P.ROWID as P_ROWID, (2+1) as Calc1, 'Constant1' as Const1
    FROM TPM_PROJECTVERSION V
         INNER JOIN TPM_PROJECT P ON P.PROJECTID = V.PROJECTID
Run Code Online (Sandbox Code Playgroud)

现在,您不必每次都运行相同的查询,只需针对新视图运行这个更简单的查询,该查询将运行得更快.非常酷的是你也可以添加派生列和计算列.

SELECT * FROM MV_Test WHERE ...
Run Code Online (Sandbox Code Playgroud)

PS

MATERIALIZED VIEWS 不是灵丹妙药,在你有一个非常慢的查询的情况下使用它们,这些查询具有经常使用的大量连接,并且读取远远超过写入.