質問

私はDWを設計するつもりです、そして、私は具体化された意見について聞きました。実際、ビューを作成したいので、ベーステーブルが変更されたら自動的に更新する必要があります。クエリの例で説明できますか。

役に立ちましたか?

解決

彼らは呼ばれています インデックス付きビュー SQL Serverで - これらの白い論文を読んで、より背景を説明してください。

基本的に、あなたがする必要があるのは:

  • 定期的なビューを作成します
  • そのビューでクラスター化されたインデックスを作成します

そして、あなたは終わった!

トリッキーな部分は、ビューはかなりの多くの制約と制限を満たす必要があるということです。それらは白い紙で概説されています。これを行うと、それだけです。ビューは自動的に更新されており、メンテナンスは必要ありません。

追加のリソース:

他のヒント

純粋にエンジニアリングの観点からは、インデックス付きビューはパフォーマンスを改善するために誰もが使用できるもののように聞こえますが、実際のシナリオは非常に異なります。私は、インデックスが必要なものとできないものに対する制限が多すぎるため、私が最も必要とするインデックスビューを使用することに失敗しました。

ビューに外側の結合がある場合、それらを使用することはできません。また、一般的なテーブル式は許可されていません...実際、サブセレクトまたは派生テーブル(句ごとのパーティションなど)に注文がある場合、あなたも運が悪いです。

これにより、インデックスビューを利用する非常に単純なシナリオのみが残ります。私の意見では、とにかく基礎となるテーブルに適切なインデックスを作成することで最適化できます。

人々が実際にインデックスビューを自分の利益に使用し、それらなしではできなかったいくつかの実際のシナリオを聞くことに興奮します

実際の見方が何であるかについて、もう少し背景が必要になるかもしれません。 Oracleでは、これらは他の場所で構築しようとするときに多くの要素で構成されるオブジェクトです。

MViewは、本質的に別のソースからのデータのスナップショットです。ビューとは異なり、ビューをクエリするときにデータが見つかりません。テーブルの形式にローカルに保存されます。 MVIEWは、定期的にまたはソースデータが変更されたときにキックオフする背景手順を使用して更新されます。 Oracleは、完全または部分的な更新を可能にします。

SQL Serverでは、以下を使用して基本的なMViewを作成して(完全な)リフレッシュして定期的に更新します。

まず、ビュー。ビューは次にテーブルであるデータベースでは非常に一般的であるため、これはほとんどの場合簡単です。これは、列とデータのビューと同じでなければなりません。これにより、ビューデータのスナップショットが保存されます。次に、テーブルを切り捨て、ビュー内の現在のデータに基づいてリロードする手順。最後に、手順を引き起こすジョブが作業を開始します。

他のすべては実験です。

インデックス付きビューがオプションではなく、クイックアップデートが必要ではない場合、ハックキャッシュテーブルを作成できます。

select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...

次に、SP_RENAMEビュー/テーブルまたはそれを参照するクエリまたはその他のビューをキャッシュテーブルを指すように変更します。

毎日/毎晩/毎週/whatnotのスケジュールを更新する

begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction

NB:これは、TXログでもスペースを食べます。計算が遅い小さなデータセットに最適です。たぶんリファクタリングして、最初に「簡単だが大きな」列を外側のビューに排除します。

MS T-SQL Serverの場合、「含める」ステートメントを含むインデックスの作成を検討することをお勧めします。一意性は必要ありません。また、クラスター化されたインデックスに関連付けられたデータの物理的なソートでもありません。 「index ... include()」は、システムによって自動的に維持される個別の物理データストレージを作成します。概念的には、オラクルの具体化されたビューに非常に似ています。

https://msdn.microsoft.com/en-us/library/ms190806.aspx

https://technet.microsoft.com/en-us/library/MS189607(v=sql.105).aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top