マテリアライズドビューを変更します。
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 : 整数
SET HIDDEN 句 SET HIDDEN 句は、マテリアライズドビューの定義を難読化するときに使用します。この設定は、元に戻せません。
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 句によって従属ビューも無効になるため、無効化されるビューだけでなく、すべての従属ビューに対する排他アクセスが必要です。
マテリアライズドビューを暗号化するには (ENCRYPTED 句)、データベースでテーブルの暗号化をあらかじめ有効にしておく必要があります。その後、データベースの作成時に指定された暗号化キーとアルゴリズムを使用してマテリアライズドビューが暗号化されます。
ALTER MATERIALIZED VIEW 文を実行するには、ビューを所有しているか、DBA 権限を持っている必要があります。
DBA 権限がない場合に、マテリアライズドビューを即時ビューに変更するときは (ALTER MATERIALIZED VIEW...IMMEDIATE REFRESH)、ビューとそのすべての参照先テーブルを所有している必要があります。
ユーザーが自分のデータを変更するためにマテリアライズドビューに対して実行できる操作は、リフレッシュ、トランケート、無効化のみです。ただし、即時ビューは、データベースサーバーによって自動的に更新されます。つまり、一度即時ビューを有効にして初期化すると、データベースサーバーはさらにパーミッションをチェックすることなく、ビューを自動的に管理します。
オートコミット。
SQL/2008 ベンダー拡張。
次の文は、EmployeeConfid88 というマテリアライズドビューを作成し、その最適化での使用を無効にします。
CREATE MATERIALIZED VIEW EmployeeConfid88 AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM Employees, Departments WHERE Employees.DepartmentID=Departments.DepartmentID; REFRESH MATERIALIZED VIEW EmployeeConfid88; ALTER MATERIALIZED VIEW GROUPO.EmployeeConfid88 DISABLE USE IN OPTIMIZATION; |
この例を実行し終わったら、作成したマテリアライズドビューを削除してください。このようにしないと、他の例を試すとき、基本となるテーブル Employees および Departments に対するスキーマ変更を実行できなくなります。有効化されている従属マテリアライズドビューを持つテーブルのスキーマは変更できません。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |