我对物化视图感到困惑。要么是我正在使用的Toad IDE让我感到困惑,要么是我对MVs的理解不够。
我在Oracle中创建了一个物化视图,如下所示……
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
发布于 2011-05-20 03:42:03
是的,Oracle在幕后创建了两个对象,一个是实际物化结果的表,另一个是包含所有元数据(查询、属性等)的物化视图。这与创建唯一约束时发生的事情非常相似-- Oracle创建一个与约束同名的唯一索引以实际强制执行约束,然后它自己创建一个约束。如果在预构建表上创建实体化视图,则该表和实体化视图最终可能具有不同的名称,就像创建使用具有不同名称的现有索引的约束条件一样。
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 VIEWhttps://stackoverflow.com/questions/6063841
复制相似问题