

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マテリアライズドビューを理解する
<a name="understanding-materialized-views"></a>

## ビュー
<a name="views"></a>

ビューは SQL `SELECT` クエリの結果セットに基づく仮想テーブルです。仮想テーブルにはクエリ式から取得したデータが含まれていますが、結果はディスクには保存されません。ビューを使用すると、クエリを実行するたびに元のテーブルからデータが取得されるため、常に最新のデータを取得できます。1 つ以上のベーステーブルまたはビューから 1 つのビューを作成できます。元のベーステーブルをクエリするのと同じ方法でビューをクエリすることもできます。

次の例では、クエリでビューを作成する方法を示しています。

```
CREATE VIEW tickets_view
AS    
   select e.eventname,
          sum(s.price) as total_sales
   from sales s
   join event e
       on e.eventid = s.eventid
   group by e.eventname;
```

次の例では、ビューをクエリする方法を示しています。

```
select eventname,
       total_sales
from ticket_view
where eventname = 'Gotterburg';
```

## マテリアライズドビュー
<a name="materialized-views"></a>

マテリアライズドビューは、クエリの結果を含むデータベースオブジェクトです。例えば、マテリアライズドビューは次のいずれかになります。
+ リモートにあるデータのローカルコピー
+ テーブルまたは結合結果の行または列のサブセット
+ 集計関数を使用したサマリー

## ビュータイプの比較
<a name="view-type-comparison"></a>

次の表は、ビューとマテリアライズドビューの違いをまとめたものです。


|  |  |  | 
| --- |--- |--- |
| **キー** | **表示** | **マテリアライズドビュー** | 
| 定義 | データを保存せず、代わりに定義済みの SQL クエリを実行してデータベース内の 1 つ以上のテーブルからデータを取得する仮想テーブル | 編集可能な SQL クエリによって定義されるが、クエリの結果はディスクに格納される仮想テーブル | 
| ストレージ | クエリ式の結果はディスクには保存されず、クエリ式のみがディスクに保存されます | クエリ式とクエリ式の結果は両方ともディスクに保存されます | 
| 実行 | ビューを定義するクエリは、1 つのクエリでビューが参照されるたびに実行されます | クエリの結果はディスクに保存されます。ユーザーがマテリアライズドビューからデータを取得しようとするたびにクエリ式が実行されるわけではありません | 
| データの最新性 | ベーステーブルから常に最新の更新値が提供されます | データベース内で値が変更されても、最新の更新値は提供されません | 
| コスト | ストレージコストなし | ストレージコストあり | 
| 設計 | 標準ビューを作成するには、次のことを行う必要があります。<br />·  基になるテーブルにアクセスする<br />·  標準の `SELECT` ステートメントを使用する | マテリアライズドビューを作成するには、次のことを行う必要があります。<br />·  基になるテーブルにアクセスする<br />·  標準の `SELECT` ステートメントを使用する<br />オプションで、以下のように指定できます。<br />Amazon Simple Storage Service (Amazon S3) に保存されている自動または手動クラスタースナップショットに、マテリアライズドビューを含むかどうか<br />マテリアライズドビューのデータを分散およびソートする方法<br />マテリアライズドビューを、ベーステーブルからの最新の変更で自動的に更新する必要があるかどうか | 
| 使用方法 | データへのアクセスや更新の頻度が低い場合 | データへのアクセスや更新が頻繁な場合 | 