指定されたマテリアライズド・ビューに関する情報を返します。
sa_materialized_view_info( [ view_name [, owner_name ] ] )
view_name 情報を返す対象のマテリアライズド・ビューの名前を指定する任意の CHAR(128) パラメータ。
owner_name マテリアライズド・ビューの所有者を指定する任意の CHAR(128) パラメータ。
view_name と owner_name のどちらも指定されていない場合、データベースに含まれるすべてのマテリアライズド・ビューに関する情報が返されます。
owner_name を指定しない場合は、名前が view_name であるすべてのマテリアライズド・ビューに関する情報が返されます。
sa_materialized_view_info システム・プロシージャは、マテリアライズド・ビューに関する次の情報を返します。
カラム名 | データ型 | 説明 |
---|---|---|
OwnerName | CHAR(128) | ビューの所有者。 |
ViewName | CHAR(128) | ビューの名前。 |
Status | CHAR(1) |
ビューに関するステータス情報。可能な値は、次のとおりです。
|
DataStatus | CHAR(1) |
ビュー内のデータに関するステータス情報。可能な値は、次のとおりです。
|
ViewLastRefreshed | TIMESTAMP |
ビューを最後に更新した時間。ViewLastRefreshed の値が NULL の場合、ビューは初期化されていません。 |
DataLastModified | TIMESTAMP |
古いビューの場合、基本となるデータを修正した最後の時間。 初期化されていないビューまたは古いと見なされないビューの場合、この値は NULL です。 |
AvailForOptimization | CHAR(1) |
オプティマイザが使用するビューの使用可能性に関する情報。可能な値は、次のとおりです。
オプティマイザがマテリアライズド・ビューを選択する方法、および選択を行うかどうかの詳細については、マテリアライズド・ビューによるパフォーマンスの向上を参照してください。 |
RefreshType | CHAR(1) |
ビューの再表示タイプ。可能な値は、次のとおりです。
手動ビューと即時ビューの詳細については、手動マテリアライズド・ビューと即時マテリアライズド・ビューを参照してください。 |
このプロシージャは、ビューの定義に問題があるために、オプティマイザによって考慮されないマテリアライズド・ビューのリストを決定する場合に便利です。このようなマテリアライズド・ビューの場合、AvailForOptimization 値は I です。マテリアライズド・ビューの定義に関する制限の詳細については、マテリアライズド・ビューの制限を参照してください。
次の表は、AvailForOptimization プロパティがどのように決定されるかを示しています。左のカラムからローを横に読んでいき、考慮する必要のある条件を確認して最終的に AvailForOptimization カラムの値を決定します。
ビューを最適化に使用することをユーザが許可していますか | ビュー定義は使用に必要な条件をすべて満たしていますか | 接続オプションはビューを使用するために必要なオプションと一致していますか | ビューは初期化されていますか | AvailForOptimization 値 |
---|---|---|---|---|
はい | はい | はい | はい | Y |
いいえ | なし | なし | なし | D |
はい | いいえ | なし | はい | I |
はい | なし | なし | いいえ | N |
はい | はい | いいえ | はい | O |
初期化されたマテリアライズド・ビューが空であることがあります。これは、基本となるテーブルに、マテリアライズド・ビュー定義を満たすデータがない場合に発生します。空のビューは、同様にデータを持たない初期化されていないマテリアライズド・ビューと同じであるとは見なされません。ViewLastRefreshed プロパティの値を使用すると、ビューが初期化されていないのか (NULL)、または基本となるテーブルのデータによって空であるのか (NOT NULL) を区別できます。
DBA 権限。または、DBO が所有するプロシージャに対する実行パーミッション。
指定したマテリアライズド・ビューのすべてのメタデータと依存性は、データベース・サーバのキャッシュにロードされます。
次の文は、データベース内のすべてのマテリアライズド・ビューに関する情報を返します。
SELECT * FROM sa_materialized_view_info(); |
sa_materialized_view_info システム・プロシージャの結果と sa_materialized_view_can_be_immediate システム・プロシージャの結果を組み合わせると、ステータス情報だけでなく、ビューを即時ビューに変更できるかどうかも返すことができます。次の文を実行し、この例で検査されるマテリアライズド・ビューを作成します。
CREATE MATERIALIZED VIEW view0 AS ( SELECT ID, Name, Description, Size FROM Products WHERE Quantity > 0 ); CREATE UNIQUE INDEX u_view0 ON view0( ID ); ALTER MATERIALIZED VIEW view0 IMMEDIATE REFRESH; CREATE MATERIALIZED VIEW view00 AS ( SELECT ID, Name, Description, Size FROM Products WHERE Quantity <= 0 ); CREATE UNIQUE INDEX u_view00 ON view00( ID ); CREATE MATERIALIZED VIEW view1 AS ( SELECT ID, Name, Description, Size FROM Products WHERE Quantity = 0 ); ALTER MATERIALIZED VIEW view1 DISABLE; CREATE MATERIALIZED VIEW view100 AS (SELECT C.ID, C.Surname, sum(P.UnitPrice) as revenue, C.CompanyName, SO.OrderDate FROM Customers C, SalesOrders SO, SalesOrderItems SOI, Products P WHERE C.ID = SO.CustomerID AND SO.ID = SOI.ID AND P.ID = SOI.ProductID GROUP BY C.ID, C.Surname, C.CompanyName, SO.OrderDate); REFRESH MATERIALIZED VIEW view100; |
次の文を実行すると、作成したビューのステータス情報と適格性情報を返します。
SELECT ViewName, Status, ViewLastRefreshed, AvailForOptimization, RefreshType, CanBeImmediate FROM sa_materialized_view_info() AS V, LATERAL( SELECT LIST( ErrorMessage ) FROM sa_materialized_view_can_be_immediate( V.ViewName, V.OwnerName ) ) AS I( CanBeImmediate ); |
View-Name | Status | ViewLast-Refreshed | AvailFor-Optimization | RefreshType | CanBeImmediate |
---|---|---|---|---|---|
view0 | E | (NULL) | N | I | |
view00 | E | (NULL) | N | M | |
view1 | D | (NULL) | N | M | ビュー 'view1' を使用できません。このビューは無効になっています。 |
view100 | E | 2008-02-12 16:47:00.000 | Y | M | マテリアライズド・ビュー view10 を即時に変更できません。すでに初期化されています。マテリアライズド・ビュー view10 を即時に変更できません。NULL 入力不可のカラムにユニークなインデックスがありません。マテリアライズド・ビューを即時に変更できません。COUNT(*) が SELECT リストの一部に必要です。マテリアライズド・ビューを即時に変更できません。非集合の NULL 入力不可のカラムにユニークなインデックスがありません。 |
結果から、次の内容を確認できます。
view0 がリフレッシュされていない即時ビューであること。
view00 がリフレッシュされていない手動ビューであること。
view1 は無効であること。
view100 は手動ビューであり、最後にリフレッシュされたのが 2008-02-12 16:47:00.000 であること。
CanBeImmediate カラムにエラー・メッセージがないため、view00 を即時ビューに変更できること。
CanBeImmediate カラムにリストされている理由のため、view1 と view100 を即時ビューに変更できないこと。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |