本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
分割提示
分割提示控制執行器節點之間的資料分佈。指定多個分割提示時,會將多個節點插入邏輯計畫,但最左邊的提示是由最佳化工具挑選。
COALESCE
將分割區數量減少為指定的分割區數量。
參數:數值 (必要) - 必須是介於 1 和 2147483647 之間的正整數
範例:
-- Reduce to 5 partitions SELECT /*+ COALESCE(5) */ employee_id, salary FROM employees;
保留
使用指定的分割表達式,將資料重新分割至指定的分割區數量。使用循環配置分佈。
參數:
-
數值 (選用) - 分割區數量;必須是介於 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_BY_RANGE
使用指定資料欄上的範圍分割,將資料重新分割至指定數量的分割區。
參數:
-
數值 (選用) - 分割區數量;必須是介於 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
重新平衡查詢結果輸出分割區,讓每個分割區的大小合理 (不會太小也不會太大)。這是最佳嘗試操作:如果有扭曲, 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;