Oracle materialized view 使用示範

在資料庫中, VIEW 是一種虛擬資料表,可以理解為 view 就是把一個查詢語法儲存起來,可以和使用 table 一樣直接做查詢,只是在 view 並不會儲存資料,而是拿儲存起來的那個語法直接去查一次實際的 table。

view 就是用來把複雜的 SQL 查詢語法封裝起來,簡化查詢。

而缺點就是只儲存查詢語法,所以每次都要直接查一次那個複雜的查詢語法,所以可能會很慢。


而 Materialized View 就是會將 view 的查詢結果儲存起來,這樣要查詢時速度就會比較快,可以手動或定時更新。缺點是需要額外占用空間(因為有儲存查詢結果),並且資料更新也會有延遲。

使用示範

假設我們有一個一般的 table:
    
CREATE TABLE orders (
  order_id     NUMBER PRIMARY KEY,
  customer_id  NUMBER,
  order_total  NUMBER,
  order_date   DATE
);
    

我們可以使用以下的語法建立一個 materialized view ,設定每天更新一次:
    
CREATE MATERIALIZED VIEW mv_order_summary
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH SYSDATE
NEXT SYSDATE + 1 -- 每天更新一次
AS
SELECT customer_id, SUM(order_total) AS total_spent
FROM orders
GROUP BY customer_id;

    

可以和查詢一般的 table 或是 view 一樣直接查詢 materialized view :
    
SELECT * FROM mv_order_summary;
    

刪除 materialized view 的語法:
    
DROP MATERIALIZED VIEW mv_order_summary;
    


文章撰寫中...請稍後...

參考資料:
Materialized Views in Oracle

留言