Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » システム・オブジェクト » システム・プロシージャ » システム・プロシージャのアルファベット順リスト

 

sa_materialized_view_info システム・プロシージャ

指定されたマテリアライズド・ビューに関する情報を返します。

構文
sa_materialized_view_info( 
[ view_name 
[, owner_name ] ] 
)
引数
  • view_name   情報を返す対象のマテリアライズド・ビューの名前を指定する任意の CHAR(128) パラメータ。

  • owner_name   マテリアライズド・ビューの所有者を指定する任意の CHAR(128) パラメータ。

備考

view_nameowner_name のどちらも指定されていない場合、データベースに含まれるすべてのマテリアライズド・ビューに関する情報が返されます。

owner_name を指定しない場合は、名前が view_name であるすべてのマテリアライズド・ビューに関する情報が返されます。

sa_materialized_view_info システム・プロシージャは、マテリアライズド・ビューに関する次の情報を返します。

カラム名 データ型 説明
OwnerName CHAR(128) ビューの所有者。
ViewName CHAR(128) ビューの名前。
Status CHAR(1)

ビューに関するステータス情報。可能な値は、次のとおりです。

  • D   disabled

  • E   enabled

DataStatus CHAR(1)

ビュー内のデータに関するステータス情報。可能な値は、次のとおりです。

  • E   最後にリフレッシュしようとしたときにエラーが発生しました。ビューは有効ですが、初期化されていません。

  • F   最後のリフレッシュ以降、基本となるテーブルが変更されていません。ビューは新しいものと見なされます。ビューは有効であり、初期化されています。

  • N   ビューは初期化されていません。これは、次のいずれかに当てはまるときに発生します。

    • ビューが作成されて以降、リフレッシュされていない

    • ビューからデータがトランケートされている

    • ビューが無効である

  • S   最後のリフレッシュ以降、基本となるテーブルが変更されています。ビューは古いものと見なされます。ビューは有効であり、初期化されています。

ViewLastRefreshed TIMESTAMP

ビューを最後に更新した時間。ViewLastRefreshed の値が NULL の場合、ビューは初期化されていません。

DataLastModified TIMESTAMP

古いビューの場合、基本となるデータを修正した最後の時間。

初期化されていないビューまたは古いと見なされないビューの場合、この値は NULL です。

AvailForOptimization CHAR(1)

オプティマイザが使用するビューの使用可能性に関する情報。可能な値は、次のとおりです。

  • D   オプティマイザによる使用は無効です。ビューの所有者は、オプティマイザがビューを使用することを許可していません。

  • I   ビューの定義が必要な条件を満たしていないなど、何らかの内部的な理由によって、オプティマイザがビューを使用できません。ただし、所有者は、オプティマイザがビューを使用することを明示的に禁止していません。

  • N   リフレッシュが実行されていないか、または失敗したために、ビューにデータがありません。ビューの所有者は、オプティマイザがビューを使用することを許可していますが、ビューが初期化されていません。

  • O   現在の接続に互換性のないオプション値があります。ビューはオプティマイザによる使用が許可されており、その定義は必要な条件をすべて満たしていますが、現在のオプション設定が、ビューの作成に使用されたオプション設定と互換性がありません。

  • Y   ビューはオプティマイザから使用できます。ビューの所有者は、オプティマイザがビューを使用することを許可しています。また、ビュー定義は、オプティマイザが使用するために必要なすべての条件を満たしています。

オプティマイザがマテリアライズド・ビューを選択する方法、および選択を行うかどうかの詳細については、マテリアライズド・ビューによるパフォーマンスの向上を参照してください。

RefreshType CHAR(1)

ビューの再表示タイプ。可能な値は、次のとおりです。

  • I   ビューは即時ビューです。即時ビューは、基本となるテーブルのデータへの変更が、マテリアライズド・ビューのデータに影響を与えるとすぐにリフレッシュされます。

  • M   ビューは手動ビューです。手動ビューは、たとえば、REFRESH MATERIALIZED VIEW 文を使用するか、または sa_refresh_materialized_views システム・プロシージャを使用して手動でリフレッシュします。

手動ビューと即時ビューの詳細については、手動マテリアライズド・ビューと即時マテリアライズド・ビューを参照してください。

このプロシージャは、ビューの定義に問題があるために、オプティマイザによって考慮されないマテリアライズド・ビューのリストを決定する場合に便利です。このようなマテリアライズド・ビューの場合、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 を即時ビューに変更できないこと。