マテリアライズド・ビューを作成、初期化、リフレッシュ、ビュー・マッチングする場合は、次の制限が適用されます。
マテリアライズド・ビューを作成するときは、マテリアライズド・ビューの定義でカラム名を明示的に定義する必要があります。カラム定義の一部として SELECT *
構成要素を含めることはできません。
マテリアライズド・ビューを作成するときは、マテリアライズド・ビューの定義に次の項目を含めることはできません。
他のビュー (マテリアライズド・ビューまたは通常のビュー) に対する参照
リモート・テーブルまたはテンポラリ・テーブルに対する参照
CURRENT USER などの変数。すべての式は確定的でなければなりません
ストアド・プロシージャ、ユーザ定義関数、または外部関数の呼び出し
T-SQL 外部ジョイン
FOR XML 句
次のデータベース・オプションでは、マテリアライズド・ビューを作成するときに特定の設定が必要です。そのように設定しない場合は、エラーが返されます。これらのデータベース・オプションの値は、オプティマイザが使用するビューにも必要です。
次のデータベース・オプションは、マテリアライズド・ビューを作成するときにマテリアライズド・ビューごとに格納されます。ビューが最適化で使用されるには、接続の現在のオプションの値がマテリアライズド・ビューで格納された値と一致する必要があります。
ビューがリフレッシュされるときは、上記の項目に示されたすべてのオプションの接続設定が無視されます。代わりに、データベース・オプションの設定 (格納されたビューの設定と一致する必要がある) が使用されます。
マテリアライズド・ビューは、ローが特定の順序で格納されない点がベース・テーブルに似ています。データベース・サーバは、データの計算時に最も効率の良い方法でローを並べます。そのため、マテリアライズド・ビュー定義で ORDER BY 句を指定すると、ビューが実体化されるときのローの順序にどのような影響があるかはわかりません。また、ビュー・マッチングの実行時に、ビューの定義内の ORDER BY 句はオプティマイザによって無視されます。
マテリアライズド・ビューと、オプティマイザによるビュー・マッチングについては、マテリアライズド・ビューによるパフォーマンスの向上を参照してください。
手動ビューを即時ビューに変更するときには、次の制限が検査されます。ビューがいずれかの制限に違反している場合は、エラーが返されます。
sa_materialized_view_can_be_immediate システム・プロシージャを使用して、手動ビューを即時ビューにする条件がそろっているかどうかを調べることができます。sa_materialized_view_can_be_immediate システム・プロシージャを参照してください。
ビューは未初期化状態である必要がある。マテリアライズド・ビューのステータスとプロパティを参照してください。
ビューには、NULL 入力不可のカラムにユニーク・インデックスがある必要がある。無い場合は追加する必要があります。インデックスの作成を参照してください。
ビューの定義がグループ化されたクエリである場合、ユニーク・インデックスのカラムは、集合関数ではない select リスト項目に対応する必要がある。
ビューの定義に次のものを含むことはできない。
ビューの定義は、単一のプロジェクト選択ジョインまたはグループ化されたプロジェクト選択ジョインのブロックである必要があり、グループ化されたプロジェクト選択ジョインのクエリ・ブロックには HAVING 句を含めることはできない。
グループ化されたプロジェクト選択ジョインのクエリ・ブロックには select リストに COUNT(*) を含める必要があり、SUM とCOUNT 集合関数のみを使用できます。
これらの構造体の詳細については、マテリアライズド・ビュー検査を参照してください。
select リストの集合関数は、複雑な式の中では参照できない。たとえば、SUM(expression) + 1
は select リストで使用できません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |