

# OPTIMIZE
<a name="optimize-statement"></a>

関連する削除ファイルのサイズと数に基づいて、データファイルをより最適化されたレイアウトに書き換えることにより、Apache Iceberg テーブル内の行を最適化します。

**注記**  
`OPTIMIZE` は Apache Iceberg テーブルでのみサポートされているトランザクションです。

## 構文
<a name="optimize-statement-syntax"></a>

次の構文の概要は、Iceberg テーブルのデータレイアウトを最適化する方法を示しています。

```
OPTIMIZE [db_name.]table_name REWRITE DATA USING BIN_PACK
  [WHERE predicate]
```

**注記**  
`WHERE` 句の*述語*にはパーティション列のみを使用できます。非パーティション列を指定すると、クエリは失敗します。

圧縮アクションは、書き換えプロセス中にスキャンしたデータ量の分だけ課金されます。`REWRITE DATA` アクションは、述語を使用して、一致する行を含むファイルを選択します。ファイル内のいずれかの行が述語と一致する場合、ファイルは最適化のために選択されます。したがって、`WHERE` 句を指定することで、圧縮オペレーションの影響を受けるファイルの数を制御できます。

## 圧縮のプロパティの設定
<a name="optimize-statement-configuring-compaction-properties"></a>

圧縮用に選択するファイルのサイズと、圧縮後の結果のファイルサイズを制御するには、テーブルプロパティパラメータを使用します。[ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) コマンドを使用して、関連する[テーブルプロパティ](querying-iceberg-creating-tables.md#querying-iceberg-table-properties)を設定できます。

## その他のリソース
<a name="optimize-statement-additional-resources"></a>

[Iceberg テーブルを最適化する](querying-iceberg-data-optimization.md)