本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
提示
SQL 分析的提示提供最佳化指令,可引導 中的查詢執行策略 AWS Clean Rooms,讓您改善查詢效能並降低運算成本。提示會建議 Spark 分析引擎應如何產生其執行計畫。
語法
SELECT /*+hint_name(parameters),hint_name(parameters) */column_listFROMtable_name;
提示使用註解樣式語法內嵌在 SQL 查詢中,且必須直接放置在 SELECT 關鍵字之後。
支援的提示類型
AWS Clean Rooms 支援兩種類型的提示:聯結提示和分割提示。
結合多個提示
您可以在單一查詢中指定多個提示,方法是使用逗號分隔它們:
-- Combine join and partitioning hints SELECT /*+ BROADCAST(d), REPARTITION(8) */ e.name, d.dept_name FROM employees e JOIN departments d ON e.dept_id = d.id; -- Multiple join hints SELECT /*+ BROADCAST(s), MERGE(d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id; -- Hints within separate hint blocks within the same query SELECT /*+ REPARTITION(100) */ /*+ COALESCE(500) */ /*+ REPARTITION_BY_RANGE(3, c) */ * FROM t;
考量和限制
-
提示是最佳化建議,而不是命令。查詢最佳化工具可能會根據資源限制或執行條件忽略提示。
-
提示直接內嵌在 CreateAnalysisTemplate 和 StartProtectedQuery APIs SQL 查詢字串中。
-
提示必須直接放在 SELECT 關鍵字後面。
-
使用提示不支援具名參數,並會擲回例外狀況。
-
REPARTITION amd REPARTITION_BY_RANGE 提示中的資料欄名稱必須存在於輸入結構描述中。
-
REBALANCE 提示中的資料欄名稱必須出現在 SELECT 輸出清單中。
-
數值參數必須是介於 1 和 2147483647 之間的正整數。不支援 1e1 等科學表示法
-
差異隱私權 SQL 查詢不支援提示。
-
PySpark 任務不支援 SQL 查詢的提示。若要在 PySpark 任務中提供執行計畫的指令,請使用資料框架 API。如需詳細資訊,請參閱 Apache Spark DataFrame API 文件
。