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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 on prebuilt table 建立物化檢視 (ZT)UI
- 使用 on prebuilt table 建立物化檢視(zt)UI
- 物化檢視prebuilt和線上重定義UI
- 建立物化檢視MV ( Materialized View )ZedView
- [zt]prebuilt 物化檢視遷移資料庫UI資料庫
- 【MV】物化檢視查詢重寫
- 【MV】實現跨庫可更新物化檢視
- oracle物化檢視Oracle
- MV (Materialed View) 物化檢視的重新整理組View
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- Oracle物化檢視詳解Oracle
- ORACLE物化檢視測試Oracle
- Oracle 物化檢視案例分享Oracle
- Oracle物化檢視語法Oracle
- ORACLE物化檢視入門Oracle
- oracle物化檢視系列(二)Oracle
- oracle物化檢視系列(一)Oracle
- CUUG oracle物化檢視講解Oracle
- Oracle 物化檢視 例項一Oracle
- Oracle物化檢視及SnapshotOracle
- ORACLE中的物化檢視建立Oracle
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- Oracle普通檢視和物化檢視的區別Oracle
- 物化檢視妙用__表同步使用物化檢視方法
- 【物化檢視】幾種物化檢視日誌分析
- Oracle 物化檢視 詳細錯誤描述 檢視方法Oracle
- Oracle 11g 建立物化檢視Oracle
- oracle 物化檢視重新整理方法Oracle
- oracle物化檢視日誌系列(一)Oracle
- oracle物化檢視日誌系列(二)Oracle
- oracle物化檢視日誌系列(三)Oracle
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- oracle10g新特性——物化檢視Oracle
- 【MV】group by查詢子句是否包含count(*)對物化檢視重新整理的影響
- 物化檢視詳解