首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle - Materialized View混淆( Toad IDE在Tables部分显示MV是否有误?)

Oracle - Materialized View混淆( Toad IDE在Tables部分显示MV是否有误?)
EN

Stack Overflow用户
提问于 2011-05-20 03:25:14
回答 1查看 4K关注 0票数 5

我对物化视图感到困惑。要么是我正在使用的Toad IDE让我感到困惑,要么是我对MVs的理解不够。

我在Oracle中创建了一个物化视图,如下所示……

代码语言:javascript
复制
CREATE MATERIALIZED VIEW TESTRESULT
NOCACHE
LOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT ...
FROM   tables...

我希望创建实例化视图,并用查询返回的数据填充该视图。好吧,没什么大不了的。

我搞不懂的是为什么我的Toad IDE在tables部分下面显示了一个表'TESTRESULT‘。它甚至有一个我可以查看的“创建表脚本”。

但我也可以在“materialized view”部分下看到我的物化视图。

在我创建物化视图时,Oracle是否在幕后创建表?看起来好像有两个独立的对象,一个物化视图和一个表?有人能解释一下在创建物化视图的幕后发生了什么吗?是Toad错了还是我误解了什么?

Toad版本: 9.6.1.1 Oracle: 10g

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 03:42:03

是的,Oracle在幕后创建了两个对象,一个是实际物化结果的表,另一个是包含所有元数据(查询、属性等)的物化视图。这与创建唯一约束时发生的事情非常相似-- Oracle创建一个与约束同名的唯一索引以实际强制执行约束,然后它自己创建一个约束。如果在预构建表上创建实体化视图,则该表和实体化视图最终可能具有不同的名称,就像创建使用具有不同名称的现有索引的约束条件一样。

代码语言:javascript
复制
SQL> select object_name, object_type
  2    from user_objects
  3
SQL> ed
Wrote file afiedt.buf

  1  select object_name, object_type
  2    from user_objects
  3*  where object_name = 'MV_EMP'
  4  /

no rows selected

SQL> create materialized view mv_emp
  2  as
  3  select *
  4    from emp;

Materialized view created.

SQL> column object_name format a30;
SQL> select object_name, object_type
  2    from user_objects
  3   where object_name = 'MV_EMP';

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
MV_EMP                         TABLE
MV_EMP                         MATERIALIZED VIEW
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6063841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档