マテリアライズド・ビューを有効または無効にすることで、データベース・サーバがそのビューを使用できるかどうかを制御できます。また、無効になったマテリアライズド・ビューは、最適化時にオプティマイザによって検討されません。クエリが無効なマテリアライズド・ビューを明示的に参照している場合、そのクエリは失敗し、エラーが返されます。マテリアライズド・ビューを無効にすると、データベース・サーバはそのビューのデータを削除しますが、定義はデータベース内に保持します。マテリアライズド・ビューをもう一度有効にすると、初期化されていない状態になるため、データを設定するためにはそのビューをリフレッシュする必要があります。
マテリアライズド・ビューに依存する通常のビューは、マテリアライズド・ビューが無効になると、データベース・サーバによって自動的に無効になります。その結果、マテリアライズド・ビューをもう一度有効にする場合は、すべての従属ビューをもう一度有効にする必要があります。このため、マテリアライズド・ビューを無効にする前に、ビューの依存性のリストを取得する場合があります。この操作は、sa_dependent_views システム・プロシージャを使用して行います。このプロシージャは ISYSDEPENDENCY システム・テーブルを検査して、従属ビューが存在する場合はそのリストを返します。
マテリアライズド・ビューを無効にすると、データとインデックスは削除されます。ビューが即時ビューの場合は、手動ビューに変わります。そのため、再度有効にする場合は、リフレッシュしてインデックスを再構築し、必要に応じてもう一度即時ビューに変更する必要があります。
パーミッションは無効化されたオブジェクトに対して付与できます。無効化されたオブジェクトに対するパーミッションはデータベースに保存され、オブジェクトが有効になると使用できるようになります。
DBA 権限のあるユーザとして、またはマテリアライズド・ビューの所有者として、データベースに接続します。
左ウィンドウ枠で、[ビュー] をダブルクリックします。
マテリアライズド・ビューを右クリックして、[無効にする] を選択します。
DBA 権限のあるユーザとして、またはマテリアライズド・ビューの所有者として、データベースに接続します。
ALTER MATERIALIZED VIEW ... DISABLE 文を実行します。
次の例は、マテリアライズド・ビュー EmployeeConfid55 を作成し、初期化して、無効化します。無効化されると、マテリアライズド・ビューのデータは削除されますが、マテリアライズド・ビューの定義はデータベース内に残ります。データベース・サーバはマテリアライズド・ビューを使用できなくなり、従属ビューが存在する場合はそのビューも無効になります。
CREATE MATERIALIZED VIEW EmployeeConfid55 AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM Employees, Departments WHERE Employees.DepartmentID=Departments.DepartmentID; REFRESH MATERIALIZED VIEW EmployeeConfid55; ALTER MATERIALIZED VIEW EmployeeConfid55 DISABLE; |
DBA 権限のあるユーザとして、またはマテリアライズド・ビューの所有者として、データベースに接続します。
左ウィンドウ枠で、[ビュー] をダブルクリックします。
マテリアライズド・ビューを右クリックして、[再コンパイルして有効にする] を選択します。
(省略可) ビューを右クリックして [データの再表示] を選択することで、ビューを初期化して、データを設定します。
DBA 権限のあるユーザとして、またはマテリアライズド・ビューの所有者として、データベースに接続します。
ALTER MATERIALIZED VIEW ... ENABLE 文を実行します。
(省略可) REFRESH MATERIALIZED VIEW を実行して、ビューを初期化し、データを設定します。
次の 2 つの文はそれぞれ、マテリアライズド・ビュー EmployeeConfid55 をもう一度有効にし、データを設定します。
ALTER MATERIALIZED VIEW EmployeeConfid55 ENABLE; REFRESH MATERIALIZED VIEW EmployeeConfid55; |
この例を実行し終わったら、作成したマテリアライズド・ビューを削除してください。そうしないと、他の例を試すときに、基本となるテーブル Employees および Departments に対するスキーマ変更ができなくなります。有効化されている従属マテリアライズド・ビューを持つテーブルのスキーマは変更できません。マテリアライズド・ビューの削除を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |