转自http://blog.sina.com.cn/s/blog_4f925fc3010184n4.html
此语句用于创建实现化视图 (Materialized View)。
语法
CREATE MATERIALIZED VIEW
[ owner.]materialized-view-name [ ( column-name, ... ) ]
[ IN dbspace-name ]
AS select-statement
参数
column-name 列表
IN 子句
AS 子句 CREATE MATERIALIZED VIEW matview AS SELECT * FROM table-name ...
。此外,select-statement 中的所有对象在数据库中必须具有唯一名称。
请参见管理实现化视图 (Materialized View) 时的限制。
注释
实现化视图 (Materialized View) 创建后,不会使用数据自动初始化。要初始化实现化视图 (Materialized View),请使用 REFRESH MATERIALIZED VIEW 语句来初始化单个实现化视图 (Materialized View),或使用 sa_refresh_materialized_views 系统过程来初始化数据库中所有未初始化的实现化视图 (Materialized View)。请参见REFRESH MATERIALIZED VIEW 语句和sa_refresh_materialized_views 系统过程。
您可以加密实现化视图 (Materialized View)、更改其 PCTFREE 设置,以及通过优化程序启用或禁用该视图的使用。但是,必须先创建实现化视图 (Materialized View),然后才能使用 ALTER MATERIALIZED VIEW 设置这些选项。在创建时这些选项的缺省值为 NOT ENCRYPTED、ENABLE USE IN OPTIMIZATION,而 PCTFREE 缺省值要根据数据库所使用的页面大小来确定(对于 4 KB 页面大小,使用 200 字节;对于 2 KB 页面大小,则使用 100 字节)。
sa_recompile_views 系统过程不会尝试重新编译实现化视图 (Materialized View)。
必须为多个选项指定特定值,才能创建实现化视图 (Materialized View)。请参见管理实现化视图 (Materialized View) 时的限制。
权限
必须具有 RESOURCE 权限和实现化视图 (Materialized View) 定义中的表的 SELECT 权限。要为其他用户创建实现化视图 (Materialized View),还必须具有 DBA 权限。
副作用
执行过程中,CREATE MATERIALIZED VIEW 语句会对实现化视图 (Materialized View) 所引用的所有表执行独占锁定,而不会阻塞。如果有一个引用表无法锁定,则语句会失败并会返回错误。
另请参见
- 使用实现化视图 (Materialized View)
- ALTER MATERIALIZED VIEW 语句
- DROP 语句
- REFRESH MATERIALIZED VIEW 语句
- CREATE VIEW 语句
标准和兼容性
-
SQL/2003
服务商扩充。
示例
以下示例会创建实现化视图 (Materialized View),该视图包含 SQL Anywhere 示例数据库中关于雇员的保密信息。但您随后必须执行 REFRESH MATERIALIZED VIEW 语句,才能初始化视图以供使用。
CREATE MATERIALIZED VIEW EmployeeConfidential AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM Employees, Departments WHERE Employees.DepartmentID=Departments.DepartmentID ORDER BY Employees.DepartmentID;