Oracle物化檢視3 - Prebuilt MV
Oracle中,Prebuilt MV建立在同名的普通表上。Prebuilt MV的列是該同名表的列的一個子集。也就是說,該同名表可以包含不在MV中出線的列(Unmanaged columns)。
在MV重新整理時,這些列的值採用預設值。假如沒有定義預設值,這些列可以不能有Not Null約束。
與普通物化檢視相比,Prebuilt MV提供的Query Rewrite功能有限。只有當Query_Rewrite_Integrity為trusted或Stale_Tolerated時,Prebuilt MV可以被Oracle Query Rewrite所使用。
與普通MV不同,當使用者刪除(Drop)MV時,該同名表不會被刪除。在建立了Prebuilt MV後,該同名表不能用drop table xxx語句刪除。
下面是Oracle自帶SH Schema中一個Prebuilt MV的例子:
CREATE MATERIALIZED VIEW CAL_MONTH_SALES_MV
ON PREBUILT TABLE
USING INDEX
REFRESH ON DEMAND
FORCE
USING DEFAULT LOCAL ROLLBACK SEGMENT
ENABLE QUERY REWRITE AS
SELECT t.calendar_month_desc
, sum(s.amount_sold) AS dollars
FROM sales s
, times t
WHERE s.time_id = t.time_id
GROUP BY t.calendar_month_desc;
當需要在MV裡新增一列時,普通物化檢視需要重建(drop materialized view, create materialized view),資料量大時,成本相當高。但是Prebuilt MV沒有這一缺陷。因為刪除物化檢視時,同名表仍然存在。下面給出一個例子:
desc cal_month_sales_mv
Name Null Type
------------------- -------- -----------
CALENDAR_MONTH_DESC NOT NULL VARCHAR2(8)
DOLLARS NUMBER
Drop materialized view cal_month_sales_mv;
materialized view CAL_MONTH_SALES_MV dropped.
alter table cal_month_sales_mv add(quantity_sold number default 0);
table CAL_MONTH_SALES_MV altered.
CREATE MATERIALIZED VIEW CAL_MONTH_SALES_MV
ON PREBUILT TABLE
USING INDEX
REFRESH ON DEMAND
FORCE
USING DEFAULT LOCAL ROLLBACK SEGMENT
ENABLE QUERY REWRITE AS
SELECT t.calendar_month_desc
, sum(s.amount_sold) AS dollars
, count(s.quantity_sold) as quantity_sold
FROM sales s
, times t
WHERE s.time_id = t.time_id
GROUP BY t.calendar_month_desc;
materialized view CAL_MONTH_SALES_MV created.
desc cal_month_sales_mv
Name Null Type
------------------- -------- -----------
CALENDAR_MONTH_DESC NOT NULL VARCHAR2(8)
DOLLARS NUMBER
QUANTITY_SOLD NUMBER
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/638844/viewspace-1062829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle普通檢視和物化檢視的區別Oracle
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 物化檢視
- 物化檢視(zt)
- calcite物化檢視詳解
- 【MVIEW】Oracle通過物化檢視同步表資料及簡介ViewOracle
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 資料庫的物化檢視資料庫
- 物化檢視分割槽實驗
- 物化檢視幾個知識點
- ClickHouse 物化檢視學習總結
- ClickHouse 效能優化?試試物化檢視優化
- ClickHouse效能優化?試試物化檢視優化
- 基於ROWID更新的物化檢視測試
- StarRocks 物化檢視重新整理流程及原理
- StarRocks 物化檢視重新整理流程和原理
- 物化檢視如何快速完成資料聚合操作?
- Postgres使用trigger自動重新整理物化檢視
- 物化檢視快速重新整理與ORA-00001
- 使用Materialise物化檢視解耦微服務架構解耦微服務架構
- 火山引擎ByteHouse:如何最佳化ClickHouse物化檢視能力?
- hg_job配置定時重新整理物化檢視
- 物化檢視日誌無法正常清除的解決方法
- 資料泵匯出匯入物化檢視(ORA-39083)
- Oracle OCP(24):檢視Oracle
- 基於圖神經網路的動態物化檢視管理神經網路
- 用exp、imp遷移包含物化檢視日誌的資料
- oracle 檢視錶空間Oracle
- 11、Oracle中的檢視Oracle
- 使用SpringBoot+PostgreSQL物化檢視實現微服務設計模式 - vinsguruSpring BootSQL微服務設計模式
- 檢視oracle臨時表空間佔用率的檢視Oracle
- Oracle檢視歷史TOP SQLOracleSQL
- oracle檢視物件DDL語句Oracle物件
- 檢視ORACLE中鎖定物件Oracle物件
- ORACLE 檢視IP,解析機器名Oracle
- Oracle相關資料字典檢視Oracle
- Oracle常用檢視錶結構命令Oracle
- 19 Oracle Data Guard 相關檢視Oracle