

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

# 分割提示
<a name="partitioning-hints"></a>

分割提示控制執行器節點之間的資料分佈。指定多個分割提示時，會將多個節點插入邏輯計畫，但最左邊的提示是由最佳化工具挑選。

### COALESCE
<a name="coalesce-hint"></a>

將分割區數量減少為指定的分割區數量。

*參數：*數值 （必要） - 必須是介於 1 和 2147483647 之間的正整數

*範例*：

```
-- Reduce to 5 partitions
SELECT /*+ COALESCE(5) */ employee_id, salary
FROM employees;
```

### 保留
<a name="repartition-hint"></a>

使用指定的分割表達式，將資料重新分割至指定的分割區數量。使用循環配置分佈。

*參數：*
+ 數值 （選用） - 分割區數量；必須是介於 1 和 2147483647 之間的正整數
+ 資料欄識別符 （選用） - 要分割的資料欄；這些資料欄必須存在於輸入結構描述中。
+ 如果同時指定兩者，數值必須首先出現

*範例*：

```
-- Repartition to 10 partitions
SELECT /*+ REPARTITION(10) */ *
FROM employees;

-- Repartition by column
SELECT /*+ REPARTITION(department) */ *
FROM employees;

-- Repartition to 8 partitions by department
SELECT /*+ REPARTITION(8, department) */ *
FROM employees;

-- Repartition by multiple columns
SELECT /*+ REPARTITION(8, department, location) */ *
FROM employees;
```

### REPARTITION\$1BY\$1RANGE
<a name="repartition-by-range-hint"></a>

使用指定資料欄上的範圍分割，將資料重新分割至指定數量的分割區。

*參數：*
+ 數值 （選用） - 分割區數量；必須是介於 1 和 2147483647 之間的正整數
+ 資料欄識別符 （選用） - 要分割的資料欄；這些資料欄必須存在於輸入結構描述中。
+ 如果同時指定兩者，數值必須首先出現

*範例*：

```
SELECT /*+ REPARTITION_BY_RANGE(10) */ *
FROM employees;

-- Repartition by range on age column
SELECT /*+ REPARTITION_BY_RANGE(age) */ *
FROM employees;

-- Repartition to 5 partitions by range on age
SELECT /*+ REPARTITION_BY_RANGE(5, age) */ *
FROM employees;

-- Repartition by range on multiple columns
SELECT /*+ REPARTITION_BY_RANGE(5, age, salary) */ *
FROM employees;
```

### REBALANCE
<a name="rebalance-hint"></a>

重新平衡查詢結果輸出分割區，讓每個分割區的大小合理 （不會太小也不會太大）。這是最佳嘗試操作：如果有扭曲， AWS Clean Rooms 會分割扭曲的分割區，使其不會太大。當您需要將查詢結果寫入資料表，以避免檔案太小或太大時，此提示很有用。

*參數：*
+ 數值 （選用） - 分割區數量；必須是介於 1 和 2147483647 之間的正整數
+ 資料欄識別符 （選用） - 資料欄必須出現在 SELECT 輸出清單中
+ 如果同時指定兩者，數值必須首先出現

*範例*：

```
-- Rebalance to 10 partitions
SELECT /*+ REBALANCE(10) */ employee_id, name
FROM employees;

-- Rebalance by specific columns in output
SELECT /*+ REBALANCE(employee_id, name) */ employee_id, name
FROM employees;

-- Rebalance to 8 partitions by specific columns
SELECT /*+ REBALANCE(8, employee_id, name) */ employee_id, name, department
FROM employees;
```