MySQL Materialized Views是一種用于提高查詢性能的數據庫技術。它基于相同的數據表或表格之間建立視圖或結構,以存儲緩存數據。這減少了查詢時的IO成本,因此提高了查詢性能。
Materialized Views是一個現成的結果集,存儲在磁盤上,而不是根據查詢運行時生成的。因此,它可以更快地響應查詢,因為結果已經在磁盤上,而不像普通視圖/子查詢,每次都要針對查詢執行。
CREATE MATERIALIZED VIEW product_monthly_report AS SELECT product_id, date_trunc('month', created_at) AS report_month, sum(price) AS total_revenue FROM orders WHERE created_at >= now() - interval '1 year' GROUP BY 1, 2;
這是創建一個名為product_monthly_report的Materialized View的示例,該視圖基于orders表格。在此示例中,我們選擇了與產品ID和月份相關聯的總收入。
Materialized Views需要手動刷新,以更新存儲的數據。刷新可以通過執行REFRESH MATERIALIZED VIEW
REFRESH MATERIALIZED VIEW product_monthly_report;
在此示例中,我們使用REFRESH MATERIALIZED VIEW語句手動刷新product_monthly_report視圖。
Materialized Views不適用于數據經常變更(比如每秒、每分鐘的變化)的表格,而適合于變化較小的報表表格。
Materialized Views在處理大量數據和復雜腳本時提高了查詢效率,并且在只需要間歇性的匯總時非常有用。