Oracle Database 的 Materialized View(物化視觀表) 是一種把複雜查詢的結果預先計算並儲存在磁碟中的真實資料物件。它像是一張實體表,能大幅加快大數據或複雜統計的查詢速度。
主要用途
- 加快查詢速度:預先算出大表格的總和、平均或關聯結果,不用每次都重新跑慢速查詢。
- 支援查詢重寫 (Query Rewrite):系統會自動把使用者對原表的查詢改去讀取物化視觀表,不需修改前端程式碼。
- 同步與複製資料:透過資料庫連線(DB Link)將遠端或別台主機的資料抓到本地存放,減少跨網路查詢。
- 分散式系統快取:把外部資料或報表常用數據暫存在本機,降低主資料庫負載。
核心特點
- 佔用儲存空間:因為資料是真實存在的,會消耗磁碟容量。
- 資料更新(重新整理)機制:
- On Demand:手動或按排程更新(完全重新整理或只更新變動的快速更新)。
- On Commit:當來源表有資料寫入(Commit)時自動更新。
確認 Query Rewrite
如果下列SQL執行結果為 query_rewrite_enabled = TRUE 代表是可以寫入
SQL
SELECT name,
value
FROM v$parameter
WHERE name LIKE '%query_rewrite%';確認是否存在 Materialized View
SQL
SELECT owner,
mview_name,
rewrite_enabled,
rewrite_capability,
staleness,
last_refresh_type
FROM dba_mviews
WHERE owner IN ('APPS','MSC','APPLSYS')
ORDER BY owner, mview_name;如果沒有 DBA_MVIEWS 權限,可以使用
SQL
SELECT owner,
mview_name,
rewrite_enabled,
staleness
FROM all_mviews
WHERE owner IN ('APPS','MSC','APPLSYS');



