

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 了解具體化視觀表
<a name="understanding-materialized-views"></a>

## 檢視
<a name="views"></a>

檢視是基於 SQL `SELECT` 查詢的結果集的虛擬資料表。虛擬資料表包含從查詢表達式擷取的資料，但結果不會儲存在磁碟上。使用檢視時，您永遠會取得最新資料，因為每次執行查詢時查詢都會從原始資料表中提取資料。您可以從一或多個基本資料表或檢視建立檢視。您也可以使用與查詢原始基本資料表相同的方式來查詢檢視。

下列查詢範例顯示如何建立檢視：

```
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 查詢以從資料庫中的一或多個資料表取得資料 | 由可編輯 SQL 查詢定義的虛擬資料表，但查詢結果儲存在磁碟上 | 
| 儲存 | 查詢表達式的結果不會儲存在磁碟上 – 僅查詢表達式儲存在磁碟上 | 查詢表達式和查詢表達式的結果都儲存在磁碟上 | 
| 執行 | 每次在查詢中參考檢視時，定義該檢視的查詢就會執行 | 查詢結果儲存在磁碟上，且查詢表達式不會在每次使用者嘗試從具體化視觀表中擷取資料時執行 | 
| 資料時近 | 永遠從基本資料表中提供最新的更新值 | 如果資料庫中的最新的更新值發生變更，則不提供該值 | 
| 成本 | 無儲存成本 | 具有儲存成本 | 
| 設計 | 若要建立標準檢視，您必須：·  可以存取基本資料表·  使用標準 `SELECT` 陳述式 | 若要建立具體化視觀表，您必須：·  可以存取基本資料表·  使用標準 `SELECT` 陳述式您可以選擇指定下列項目：·  是否將具體化視觀表包含在自動化和手動叢集快照中，這些快照會儲存在 Amazon Simple Storage Service (Amazon S3) 中·  如何分佈和排序具體化視觀表中的資料·  是否應使用基本資料表中的最新變更自動重新整理具體化視觀表 | 
| 用量 | 不常存取或更新資料時 | 經常存取或更新資料時 | 