

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

# キャッシュテーブル
<a name="sql-commands-cache-table"></a>

CACHE TABLE コマンドは、既存のテーブルのデータをキャッシュするか、クエリ結果を含む新しいテーブルを作成してキャッシュします。

**注記**  
キャッシュされたデータはクエリ全体で保持されます。

構文、引数、およびいくつかの例は、[Apache Spark SQL リファレンス](https://spark.apache.org/docs/latest/api/sql/)から取得されます。

## 構文
<a name="CACHE-TABLE-syntax"></a>

CACHE TABLE コマンドは、次の 3 つの構文パターンをサポートしています。

AS (括弧なし): クエリ結果に基づいて新しいテーブルを作成してキャッシュします。

```
CACHE TABLE cache_table_identifier AS query;
```

AS と括弧の場合: 関数は最初の構文と似ていますが、括弧を使用してクエリを明示的にグループ化します。

```
CACHE TABLE cache_table_identifier AS ( query );
```

AS なし: SELECT ステートメントを使用してキャッシュする行をフィルタリングし、既存のテーブルをキャッシュします。

```
CACHE TABLE cache_table_identifier query; 
```

コードの説明は以下のとおりです。
+ すべてのステートメントはセミコロン (;) で終わる必要があります
+ `query` は通常、SELECT ステートメントです。
+ クエリを囲む括弧は AS ではオプションです
+ AS キーワードはオプションです

## パラメータ
<a name="CACHE-TABLE-parameters"></a>

 *cache\$1table\$1identifier*   
キャッシュされたテーブルの名前。オプションのデータベース名修飾子を含めることができます。

 *AS*   
クエリ結果から新しいテーブルを作成してキャッシュするときに使用されるキーワード。

query**  
キャッシュするデータを定義する SELECT ステートメントまたはその他のクエリ。

## 例
<a name="CACHE-TABLE-examples"></a>

次の例では、キャッシュされたテーブルはクエリ全体に対して保持されます。キャッシュ後、*cache\$1table\$1identifier* を参照する後続のクエリは、*sourceTable* から再計算または読み取りを行うのではなく、キャッシュされたバージョンから読み取ります。これにより、頻繁にアクセスされるデータのクエリパフォーマンスを向上させることができます。

### クエリ結果からフィルタリングされたテーブルを作成してキャッシュする
<a name="create-cache-filterd-table"></a>

最初の例は、クエリ結果から新しいテーブルを作成してキャッシュする方法を示しています。このコマンドは、`SELECT`ステートメントの周囲に括弧を付けずに `AS`キーワードを使用します。ステータスが`cache_table_identifier`「」である「」の行のみを含む`sourceTable`「」という名前の新しいテーブルが作成されます`active'`。クエリを実行し、結果を新しいテーブルに保存し、新しいテーブルの内容をキャッシュします。キャッシュされたデータを使用するには、元の '`sourceTable`' は変更されず、後続のクエリは '`cache_table_identifier`' を参照する必要があります。

```
CACHE TABLE cache_table_identifier AS
    SELECT * FROM sourceTable 
    WHERE status = 'active';
```

### 括弧で囲まれた SELECT ステートメントを使用してクエリ結果をキャッシュする
<a name="cache-query-results"></a>

2 番目の例は、 `SELECT` ステートメントの周囲に括弧を使用して、クエリの結果を指定された名前 (`cache_table_identifier`) の新しいテーブルとしてキャッシュする方法を示しています。このコマンドは、ステータスが`cache_table_identifier`「」である「」の行のみを含む`sourceTable`「」という名前の新しいテーブルを作成します`active'`。クエリを実行し、結果を新しいテーブルに保存し、新しいテーブルの内容をキャッシュします。元の '`sourceTable`' は変更されません。キャッシュされたデータを使用するには、後続のクエリで`cache_table_identifier`「」を参照する必要があります。

```
CACHE TABLE cache_table_identifier AS (
    SELECT * FROM sourceTable 
    WHERE status = 'active'
);
```

### フィルター条件を使用して既存のテーブルをキャッシュする
<a name="cache-existing-table"></a>

3 番目の例は、別の構文を使用して既存のテーブルをキャッシュする方法を示しています。この構文は、'`AS`' キーワードと括弧を省略し、通常、新しいテーブルを作成するのではなく、'`cache_table_identifier`' という名前の既存のテーブルから指定された行をキャッシュします。`SELECT` ステートメントは、キャッシュする行を決定するフィルターとして機能します。

**注記**  
この構文の正確な動作は、データベースシステムによって異なります。必ず、特定の AWS サービスに適した構文を確認してください。

```
CACHE TABLE cache_table_identifier 
SELECT * FROM sourceTable 
WHERE status = 'active';
```