68

ベーステーブルをクエリするだけでなく、マテリアライズドビューが望ましい理由は明らかです。あまり明確でないのは、MV と同じデータで別のテーブルを作成するだけの利点です。MV の唯一の利点は、作成/保守の容易さだけですか?

MV は、スキーマが一致するテーブルと、MV の SELECT ステートメントを使用した INSERT INTO と同等ではありませんか?

つまり、次のように MV を作成できます。

CREATE MATERIALIZED VIEW ... AS
SELECT * FROM FOO;

また、同等のテーブルを作成できます。

CREATE TABLE bar (....);
INSERT INTO bar 
SELECT * FROM FOO;

作成/保守の容易さだけが利点であるとは言いませんが、何かが欠けていないことを確認したいだけです。

4

12 に答える 12

33

動的クエリ書き換え。マテリアライズド ビューは関係を定義するだけでなく、コストのかかる結合や集計を事前に計算することもできます。オプティマイザーは、MV がクエリで明示的に使用されていない場合でも (DB 設定などを指定して)、MV を使用して関連データをフェッチするほどスマートです。

あなたの質問は Oracle としてタグ付けされましたが、MSSQL も同様のトリックを行います。

于 2010-11-18T19:33:00.833 に答える
13

これらは基本的に同等ですが、MV にはデータを自動的に更新するためのさまざまなオプションがあり、メンテナンスが容易になるだけでなく、行ごとに変更を追跡できるため、場合によっては効率も向上します。

于 2010-11-18T19:27:08.103 に答える
10

マテリアライズド ビューは更新できます。マテリアライズド ビューは定期的に取得されたデータのスナップショットです。

2 番目のステートメントは 1 回限りの取引です。その時点でデータがテーブルに挿入されます。元のデータをさらに変更しても、テーブルには反映されません。

于 2010-11-18T19:27:47.930 に答える
7
  1. マテリアライズド・ビューは、それが依存する基本関係と同期したままになります。

  2. マテリアライズド・ビューが更新可能である場合、マテリアライズド・ビューを変更すると、それが依存する基本関係も変更されます。

于 2012-08-10T22:33:30.517 に答える
5

マテリアライズド ビューの大きな利点は、挿入/更新/削除を犠牲にして事前に計算および保存されるため、集計データを非常に高速に取得できることです。データベースはマテリアライズド ビューを実際のデータと同期させます。車輪を再発明する必要はありません。データベースに任せてください。

于 2010-11-18T19:28:58.327 に答える
1

他の回答に加えて(私はそれを見たことがないため)、どちらもスペースを使い果たしますが、マテリアライズドビューは論理的に正規化されていますが、余分なテーブルは論理的に非正規化されています。これが一時的なものでない場合は、ベース テーブルを更新するたびに 2 番目のテーブルを更新することを忘れないでください。

于 2010-11-22T23:17:21.087 に答える
0

テーブルとMVの違いはテーブルにあります。他のユーザーに表示されるDML操作を実行できますが、データベースサーバーを更新するまで、MVに加えた変更は他のユーザーには利用できません。

複雑なクエリを使用して複数のテーブルに基づいてMVを構築する場合、MVには別の利点があります。MVを使用する場合、ユーザーはパフォーマンスを大幅に向上させます。

于 2010-11-18T19:26:09.227 に答える