数据库初级教程:第六讲 创建物化视图
一个物化视图的创建的主要的作用是实现数据库之间的数据复制和数据仓库中使用。
在数据复制的环境中,物化视图要创建主键,行ID,对象和子查询物化视图
在数据仓库中的环境中,物化视图要创建有物化的聚合视图,单表的物化的聚合视图,和
物化的联接视图。所有的这三种视图都使用了查询重写技术。
前提条件:要求有创建物化视图的权限,和创建表,查询表的权限。
如果是一个提交时更新的视图,还要有提交时更新的系统权限。
如果启用了查询重写的选项,还有要查询重写的权限。
示例如下:这是一个最简单的物化视图,以hr.employees为主表。
默认是一个主键的物化视图,以要求时进行数据更新。
CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM hr.employees;
示例如下:这个一个以远程数据库上的主表,创建的带子查询的物化视图。
CREATE MATERIALIZED VIEW foreign_customers FOR UPDATE
AS SELECT * FROM sh.customers@remote cu
WHERE EXISTS
(SELECT * FROM sh.countries@remote co
WHERE co.country_id = cu.country_id);
示例如下:这个一个物化的联接视图。它启用了查询重写选项。指定了表空间和并行度。
表空间的内容,之后再描述。
CREATE MATERIALIZED VIEW sales_by_month_by_state
TABLESPACE example
PARALLEL 4
BUILD IMMEDIATE
REFRESH COMPLETE
ENABLE QUERY REWRITE
AS SELECT t.calendar_month_desc, c.cust_state_province,
SUM(s.amount_sold) AS sum_sales
FROM times t, sales s, customers c
WHERE s.time_id = t.time_id AND s.cust_id = c.cust_id
GROUP BY t.calendar_month_desc, c.cust_state_province;