1

DB2 では、Materialized Query Table (MQT) がサポートされています。基本的に、クエリを記述して MQT を作成します。ただし、ビューとの違いは、クエリが事前に実行され、結果のデータが MQT に格納され、MQT をベース テーブルと更新/同期するときにいくつかのオプションがあることです。

SQL Server でも同じ機能が必要です。同じ結果を達成する方法はありますか?

数百万行のテーブルがあり、ダッシュボードに概要 (メンバーの総数、総費用など) を表示したいと考えています。そのため、ユーザーがダッシュボードにアクセスするたびにカウントするのではなく、それらをテーブルに保存し、そのテーブルを毎晩更新したいと考えています。

あらゆる種類のヒント、回答、提案、アイデアを歓迎します。ありがとう。

4

4 に答える 4

2

インデックス付きビューがクエリを事前に実行せず、その結果を保存せず、更新オプションを提供しないことがわかります。

しかし、絶対にそうです!!

"インデックス付きビュー" は、SQL Server のビューの実体化です。結果のデータは組み立てられ、ディスクに保存されます。その意味で、クエリは事前に実行されます。

いいえ、すべてのフィールドにインデックスを付ける必要はありません。(適切な列に基づいて) ビューにクラスター化インデックスを追加するだけで、結果のデータが実際にディスクに格納されます。SQL Server では、クラスター化インデックス実際にはデータです。

SQL Server 2000 Books Online のこの記事を参照してください:インデックス付きビューの作成

マイクロソフトは明確に書いています:

ビューに一意のクラスター化インデックスが作成されると、そのビューが実行され、クラスター化インデックスを持つテーブルが格納されるのと同じ方法で結果セットがデータベースに格納されます。

于 2010-04-25T15:14:47.613 に答える
1

マテリアライズド・ビューは1つまたは複数のソース表に基づいており、ソース表が更新されるとすぐにデータを更新します。これは強力な機能ですが、以前の投稿での議論に基づくと、あなたが望むものや必要なもののようには聞こえません。

やりたいことをする簡単な方法は次のとおりです。

  • 集約された(要約された)データを含む別のテーブルを作成します
  • そのデータを計算して保存するプロセス(できればストアドプロシージャ)を作成します
  • この手順をいつどのように開始するかを決定します

要約されたデータは、午前12:01などの特定の時間(または「現在」)に準備する必要がありますか?その場合は、SQLエージェントジョブを作成し、午前12時1分にプロシージャを起動するように構成します。要約されたデータは、前のルーチンまたは2つが前日のデータを準備または確定した後にのみ作成できますか?その場合は、そのプロセスの最後に要約ルーチンへの呼び出しを追加します。

(これはDB2でどのように構成されますか?MQTが更新されるタイミングをどのように決定または構成しますか?)

于 2010-04-25T18:27:20.850 に答える
1

はい、この記事を見て ください http://msdn.microsoft.com/en-us/library/cc917715.aspx「インデックス付きビュー」について

(WITH SCHEMABINDING)オプションも見てください

于 2010-04-25T10:54:43.967 に答える
0

レプリケーションについてどう思いますか, 彼らは、ほとんどすべてのビジネス シナリオがデータ レポートのレプリケーションを検討していると述べました

于 2010-04-25T18:18:44.467 に答える