基於複製的多層巢狀快速重新整理物化檢視
基於複製的快速重新整理物化檢視可以包含多層巢狀的查詢,這裡給出一個簡單的例子。
基於複製的物化檢視一般滿足兩個條件,表級複製且源表和目標表不在同一個資料庫上。
所謂的表級複製是指,基於複製的物化檢視不會包含聚集函式,也不會透過連線使得物化檢視包含兩張或更多的表的欄位。
而這種物化檢視也可以包含連線查詢,但是連線方式是EXISTS方式。
此外還要求所有的表建立物化檢視日誌,且物化檢視日誌包含主鍵列、所有連線列和所有的過濾列。
看一個包含3層巢狀子查詢的例子:
SQL> CREATE TABLE T1
2 (ID NUMBER PRIMARY KEY,
3 NAME VARCHAR2(30));
表已建立。
SQL> CREATE TABLE T2
2 (ID NUMBER PRIMARY KEY,
3 FID NUMBER,
4 NAME VARCHAR2(30),
5 CONSTRAINT FK_T2_FID FOREIGN KEY (FID)
6 REFERENCES T1(ID));
表已建立。
SQL> CREATE TABLE T3
2 (ID NUMBER PRIMARY KEY,
3 TYPE VARCHAR2(30));
表已建立。
SQL> CREATE TABLE T4
2 (ID NUMBER PRIMARY KEY,
3 FID_T2 NUMBER,
4 FID_T3 NUMBER,
5 CONSTRAINT FK_T4_T2 FOREIGN KEY (FID_T2)
6 REFERENCES T2(ID),
7 CONSTRAINT FK_T4_T3 FOREIGN KEY (FID_T3)
8 REFERENCES T3(ID));
表已建立。
SQL> CREATE INDEX IND_T2_FID ON T2(FID);
索引已建立。
SQL> CREATE INDEX IND_T4_FID_T2 ON T4(FID_T2);
索引已建立。
SQL> CREATE INDEX IND_T4_FID_T3 ON T4(FID_T3);
索引已建立。
SQL> CREATE MATERIALIZED VIEW LOG ON T1;
實體化檢視日誌已建立。
SQL> CREATE MATERIALIZED VIEW LOG ON T2 WITH (FID);
實體化檢視日誌已建立。
SQL> CREATE MATERIALIZED VIEW LOG ON T3 WITH (TYPE);
實體化檢視日誌已建立。
SQL> CREATE MATERIALIZED VIEW LOG ON T4 WITH (FID_T2, FID_T3);
實體化檢視日誌已建立。
SQL> INSERT INTO T1
2 SELECT ROWNUM, TNAME
3 FROM TAB;
已建立28行。
SQL> INSERT INTO T2
2 SELECT ROWNUM, MOD(ROWNUM, 2) + 1, TNAME
3 FROM TAB;
已建立28行。
SQL> INSERT INTO T3
2 SELECT ROWNUM, TYPE
3 FROM (SELECT DISTINCT OBJECT_TYPE TYPE
4 FROM ALL_OBJECTS);
已建立37行。
SQL> INSERT INTO T4
2 SELECT ROWNUM, T2.ID, T3.ID
3 FROM T2, T3;
已建立1036行。
SQL> COMMIT;
提交完成。
下面在目標站點可以建立物化檢視:
SQL> CREATE DATABASE LINK TESTZJ
2 CONNECT TO TEST
3 IDENTIFIED BY TEST
4 USING '172.25.13.231/TESTZJ';
Database link created.
SQL> SELECT * FROM GLOBAL_NAME@TESTZJ;
GLOBAL_NAME
--------------------------------------------------------------------------------
TESTZJ
SQL> CREATE MATERIALIZED VIEW MV_T1234
2 REFRESH FAST AS
3 SELECT *
4 FROM T1@TESTZJ
5 WHERE EXISTS
6 (SELECT 1
7 FROM T2@TESTZJ
8 WHERE T1.ID = T2.FID
9 AND EXISTS
10 (SELECT 1
11 FROM T4@TESTZJ
12 WHERE FID_T2 = T2.ID
13 AND EXISTS
14 (SELECT 1
15 FROM T3@TESTZJ
16 WHERE T3.ID = FID_T3
17 AND TYPE = 'TABLE')));
Materialized view created.
EXISTS子查詢不僅可以像例子中存在一對多和多對一的關係,甚至還支援多對多的關係。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-667121/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 包含複雜查詢的快速重新整理的物化檢視
- 物化檢視的快速重新整理測試與物化檢視日誌
- 資料複製_物化檢視
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 【ORACLE】物化檢視快速重新整理限制條件Oracle
- Oracle 物化檢視 快速重新整理 限制 說明Oracle
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 12c 物化檢視 - 對快速重新整理的理解
- Oracle 物化檢視快速重新整理對效能的影響Oracle
- oracle10g nested materialized view巢狀物化檢視示例OracleZedView巢狀
- 集合框架-集合的巢狀遍歷(多層巢狀)框架巢狀
- Oracle 物化檢視1 - 單表聚合及其快速重新整理Oracle
- 物化檢視複製概念和體系結構——高階複製
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- ZT 定位導致物化檢視無法快速重新整理的原因
- oracle 物化檢視重新整理方法Oracle
- 各種檢視的巢狀巢狀
- 多層巢狀同義詞巢狀
- 資料庫鏈、物化檢視、高階複製方面資料庫
- 給物化檢視設定自動快速重新整理功能失敗
- 建立快速重新整理物化檢視使用with rowid還是with primary key?
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- oracle 物化檢視的自動重新整理方法Oracle
- 物化檢視重新整理的問題及分析
- MV (Materialed View) 物化檢視的重新整理組View
- ORA-12052,不能建立快速重新整理物化檢視的解決
- 11G物化檢視支援基於DBLINK遠端表的快速重新整理,包含有LOB欄位的表也可以進行快速重新整理了。
- 多層巢狀表型別語法巢狀型別
- 物化檢視日誌與增量重新整理
- StarRocks 物化檢視重新整理流程及原理
- 淺析為何Oracle物化檢視對distinct, group by不支援快速重新整理Oracle
- Unity在檢視皮膚上顯示巢狀的多個listUnity巢狀
- 物化檢視(Materialized View)的重新整理回滾約束ZedView
- 物化檢視(Materialized View)的重新整理回滾測試ZedView
- 物化檢視實現資料庫倉庫主從複製(1)資料庫