在資料庫中, VIEW 是一種虛擬資料表,可以理解為 view 就是把一個查詢語法儲存起來,可以和使用 table 一樣直接做查詢,只是在 view 並不會儲存資料,而是拿儲存起來的那個語法直接去查一次實際的 table。
view 就是用來把複雜的 SQL 查詢語法封裝起來,簡化查詢。
而缺點就是只儲存查詢語法,所以每次都要直接查一次那個複雜的查詢語法,所以可能會很慢。
而 Materialized View 就是會將 view 的查詢結果儲存起來,這樣要查詢時速度就會比較快,可以手動或定時更新。缺點是需要額外占用空間(因為有儲存查詢結果),並且資料更新也會有延遲。
我們可以使用以下的語法建立一個 materialized view ,設定每天更新一次:
可以和查詢一般的 table 或是 view 一樣直接查詢 materialized view :
刪除 materialized view 的語法:
文章撰寫中...請稍後...
參考資料:
Materialized Views in Oracle
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
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com