回答:
マテリアライズドビューはディスクベースであり、クエリ定義に基づいて定期的に更新されます。
ビューは仮想のみであり、アクセスされるたびにクエリ定義を実行します。
ビューが照会されたときに、ビュー定義の基になるテーブルのデータを評価します。これはテーブルの論理ビューであり、他にデータは保存されていません。
ビューの利点は、常に最新のデータが返されることです。ビューの欠点は、そのパフォーマンスが、ビューが基づいている選択ステートメントの精度に依存することです。ビューで使用されるselectステートメントが多くのテーブルを結合する場合、またはインデックス付けされていない列に基づく結合を使用する場合、ビューのパフォーマンスが低下する可能性があります。
これらは、(selectステートメントに基づく)データの論理ビューであるという点で通常のビューに似ていますが、基になるクエリ結果セットはテーブルに保存されています。これの利点は、マテリアライズドビューをクエリするときに、インデックスが付けられている可能性があるテーブルをクエリしていることです。
さらに、すべての結合はマテリアライズドビューの更新時に解決されるため、マテリアライズドビューから選択するたびではなく、1回(またはマテリアライズドビューを更新するたびに)結合の料金を支払います。さらに、クエリー・リライトを有効にすると、マテリアライズド・ビューから読み取るように、マテリアライズド・ビューのソースから選択するクエリーを最適化できます。集計テーブルの形式として、または頻繁に実行されるクエリのコピーとしてマテリアライズドビューを作成する状況では、これによりエンドユーザーアプリケーションの応答時間が大幅に短縮されます。ただし、マテリアライズド・ビューから取得したデータは、マテリアライズド・ビューが最後にリフレッシュされたときと同じくらい最新のものであるという欠点があります。
マテリアライズドビューは、手動で、設定されたスケジュールに従って、または基になるテーブルの1つからのデータの変更を検出するデータベースに基づいて更新するように設定できます。マテリアライズドビューは、基礎となるテーブルの変更データキャプチャソースとして機能するマテリアライズドビューログと組み合わせることにより、段階的に更新できます。
マテリアライズドビューは、データウェアハウス/ビジネスインテリジェンスアプリケーションで最も頻繁に使用されます。このアプリケーションでは、数千万行の大きなファクトテーブルにクエリを実行すると、クエリの応答時間が長くなり、アプリケーションが使用できなくなります。
マテリアライズドビューは、スナップショットアイソレーションと同様に、一貫した瞬間を保証するのにも役立ちます。
ビューはクエリを使用して、基になるテーブルからデータをプルします。
マテリアライズドビューは、クエリの結果セットを含むディスク上のテーブルです。
マテリアライズドビューは主に、インデックスが適用された標準ビューを使用することが現実的または望ましくない場合に、アプリケーションのパフォーマンスを向上させるために使用されます。マテリアライズドビューは、トリガーまたはON COMMIT REFRESH
オプションを使用して定期的に更新できます。これにはいくつかの追加の権限が必要ですが、複雑なことは何もありません。ON COMMIT REFRESH
少なくともOracle 10以降に導入されています。
ビューは基本的に、特定のクエリによってその場で入力される論理的なテーブルのような構造です。ビュークエリの結果はディスク上のどこにも保存されず、クエリが実行されるたびにビューが再作成されます。マテリアライズドビューは、データベース内に保存され、ディスクに書き込まれる実際の構造です。これらは、作成時に定義されたパラメーターに基づいて更新されます。
ビュー:ビューは単なる名前付きクエリです。何も保存していません。ビューにクエリがある場合、ビュー定義のクエリを実行します。実際のデータはテーブルから取得されます。
マテリアライズドビュー:データを物理的に保存し、定期的に更新します。MVのクエリ中に、MVからのデータを提供します。
マイク・マカリスターのかなり完全な答えに加えて...
マテリアライズドビューは、ビュークエリがコンパイラによって単純であると見なされたときに、データベースが変更を検出して自動的に更新するように設定できます。複雑すぎると考えられる場合、ソーステーブルの変更を追跡してmviewテーブルの変更された行のみを更新するために、本質的に内部トリガーであるものを設定することはできません。
マテリアライズドビューを作成すると、Oracleはmview と同じ名前のテーブルとして両方を作成するため、混乱を招く可能性があります。
マテリアライズドビューは、選択クエリによって駆動されるデータの論理ビューですが、クエリの結果はテーブルまたはディスクに保存され、クエリの定義もデータベースに保存されます。
マテリアライズドビューのパフォーマンスはマテリアライズドビューのデータがテーブルに格納され、テーブルにインデックスが作成されるため結合の速度が上がるため、マテリアライズドビューのパフォーマンスはマテリアライズドビューの更新時に実行されるため、毎回起動する必要はありません。ビューの場合と同様に結合ステートメント。
その他の違いとしては、ビューの場合は常に最新のデータを取得しますが、マテリアライズドビューの場合は、ビューを更新して最新のデータを取得する必要があります。マテリアライズドビューの場合、MVを最新の状態に保つために追加のトリガーまたは自動メソッドが必要ですが、これはデータベース内のビューには必要ありません。