指定されたマテリアライズドビューに関する情報を返します。
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 値 |
---|---|---|---|---|
Yes | Yes | Yes | Yes | Y |
No | N/A | N/A | N/A | D |
Yes | No | N/A | Yes | I |
Yes | N/A | N/A | No | N |
Yes | Yes | No | Yes | 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 );; |
ViewName | Status | ViewLastRefreshed | AvailForOptimization | 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 を即時ビューに変更できないこと。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |