在达梦数据库(DM,Dameng)中,物化视图(Materialized View)是一种持久化存储查询结果的数据库对象,可以提高查询性能,尤其是在处理复杂聚合或远程数据查询时非常有用。下面是关于创建和使用达梦物化视图的详细说明:
一、创建物化视图
语法:
CREATE MATERIALIZED VIEW 视图名
[BUILD IMMEDIATE | BUILD DEFERRED]
[REFRESH [FAST | COMPLETE | FORCE]]
[START WITH (时间)]
[NEXT (时间间隔)]
[ENABLE QUERY REWRITE]
AS
SELECT 语句;
参数解释:
- BUILD IMMEDIATE:创建视图时立即填充数据(默认)。
- BUILD DEFERRED:仅创建结构,不立即填充数据。
- REFRESH:
- FAST:增量刷新(需要日志支持)。
- COMPLETE:完全刷新(重新执行查询)。
- FORCE:系统决定采用 FAST 或 COMPLETE。
- START WITH / NEXT:定义刷新时间。
- ENABLE QUERY REWRITE:允许查询改写(提高性能)。
二、使用示例
示例1:创建一个静态的物化视图
CREATE MATERIALIZED VIEW mv_emp_dept
BUILD IMMEDIATE
REFRESH COMPLETE
AS
SELECT d.dept_name, COUNT(e.emp_id) AS emp_count
FROM employee e
JOIN department d ON e.dept_id = d.dept_id
GROUP BY d.dept_name;
示例2:定时刷新
CREATE MATERIALIZED VIEW mv_sales_summary
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH SYSDATE
NEXT SYSDATE + 1
AS
SELECT region, SUM(amount) AS total_sales
FROM sales
GROUP BY region;
上述表示:每天刷新一次。
三、刷新物化视图
手动刷新命令:
EXECUTE IMMEDIATE 'REFRESH MATERIALIZED VIEW 视图名';
例如:
EXECUTE IMMEDIATE 'REFRESH MATERIALIZED VIEW mv_emp_dept';
四、查看物化视图相关信息
查询系统表查看所有物化视图:
SELECT * FROM DBA_MVIEWS;
查看刷新状态:
SELECT * FROM DBA_MVIEW_REFRESH_TIMES;
五、注意事项
- 达梦不支持所有 Oracle 中物化视图的高级功能,例如日志自动维护,需手动管理。
- 物化视图适合读取多、写入少的场景。
- 建议搭配
DBMS_SCHEDULER
或外部任务进行自动刷新。