变更实例化视图。
ALTER MATERIALIZED VIEW [ owner.]materialized-view-name { SET HIDDEN | { ENABLE | DISABLE } | { ENABLE | DISABLE } USE IN OPTIMIZATION | { ADD PCTFREE percent-free-space | DROP PCTFREE } | [ NOT ] ENCRYPTED | [ { IMMEDIATE | MANUAL } REFRESH ] }
percent-free-space:整数
ENABLE 子句 ENABLE 子句用于启用已被禁用的实例化视图,使之可供数据库服务器使用。此子句对于已启用的视图无效。使用此子句后,必须刷新以便对视图进行初始化,然后重新创建视图禁用时被删除的所有文本索引。
DISABLE 子句 DISABLE 子句用于禁止数据库服务器使用视图。禁用实例化视图时,数据库服务器会删除视图的数据及索引。
{ ENABLE | DISABLE } USE IN OPTIMIZATION 子句 使用此子句指定是否希望实例化视图可供优化程序使用。如果指定 DISABLE USE IN OPTIMIZATION,则只能在执行显式引用视图的查询时使用实例化视图。缺省使用 ENABLE USE IN OPTIMIZATION。
ADD PCTFREE 子句 指定希望在每页上保留的可用空间的百分比。如果数据更新时行大小增加,将占用可用空间。如果某页上没有可用空间,则每次增加该页上的行大小时,都需要将该行拆分到多个页中,从而导致产生行碎片并可能引起性能下降。
percent-free-space 的值是一个介于 0 和 100 之间的整数。值为 0 表示每个页面上均没有可用空间—每个页面均完全填满。如果值很高,会使每行单独插入到页中。如果未设置 PCTFREE,或将其删除,则会根据数据库页面大小应用缺省 PCTFREE 设置(4 KB 页面大小应用 200 字节,2 KB 页面大小应用 100 字节)。
DROP PCTFREE 子句 删除实例化视图的当前有效 PCTFREE 设置,并根据数据库页大小应用缺省 PCTFREE 值。
[ NOT ] ENCRYPTED 子句 指定是否加密实例化视图数据。缺省情况下,创建时不加密实例化视图的数据。要加密实例化视图,请指定 ENCRYPTED。要解密实例化视图,请指定 NOT ENCRYPTED。
如果变更另一个用户拥有的实例化视图,必须通过包含该所有者来限定名称(例如,GROUPO.EmployeeConfidential)。如果不限定名称,数据库服务器就会查找具有您所拥有的那个名称的实例化视图,并对其进行变更。如果没有这样的视图,服务器将返回错误。
当禁用实例化视图(使用 DISABLE 子句)后,数据库服务器便无法再使用此视图来回应查询。此外,数据和索引被删除,刷新类型更改为手动。还会禁用所有相关的常规视图。
DISABLE 子句不仅要求对被禁用的视图具有独占访问权限,还要求对所有相关视图具有独占访问权限,因为这些视图也会被禁用。
若要加密实例化视图(使用 ENCRYPT 子句),必须在数据库中已启用表加密。然后系统会使用数据库创建时所指定的加密密钥和算法来加密实例化视图。
用户对实例化视图可执行的更改数据操作仅有刷新、截断和禁用。但是,快速视图可由数据库服务器自动更新。即启用快速视图并进行初始化后,数据库服务器就会自动维护它,而不需要附加的特权检查。
您必须是该实例化视图的所有者,或者具有 ALTER ANY MATERIALIZED VIEW 或 ALTER ANY OBJECT 系统特权。
如果您不具有所需特权,但想将实例化视图变更为快速视图 (ALTER MATERIALIZED VIEW...IMMEDIATE REFRESH),您必须拥有该视图及其引用的所有表。
SQL/2008 服务商扩充。
以下语句创建 EmployeeConfid88 实例化视图,然后禁止它在优化中的使用。要运行此示例,还必须拥有 CREATE ANY MATERIALIZED VIEW 系统特权,并且对 Employees 和 Departments 表具有 SELECT 特权。
处理该示例时,应删除所创建的实例化视图。否则,在试验其它示例时,将无法对其基础表 Employees 和 Departments 执行模式更改。无法变更具有已启用相关实例化视图的表的模式。
CREATE MATERIALIZED VIEW EmployeeConfid88 AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM GROUPO.Employees, GROUPO.Departments WHERE Employees.DepartmentID=Departments.DepartmentID; REFRESH MATERIALIZED VIEW EmployeeConfid88; ALTER MATERIALIZED VIEW EmployeeConfid88 DISABLE USE IN OPTIMIZATION; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |