本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
提示
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 和的提示都直接嵌入在 SQL 查询字符串中 StartProtectedQuery APIs。
-
提示必须直接放在 SELECT 关键字之后。
-
命名参数不支持带有提示,并且会引发异常。
-
REPARTITION 和 REPARTITION_BY_RANGE 提示中的列名必须存在于输入架构中。
-
REBALANCE 提示中的列名必须出现在 SELECT 输出列表中。
-
数字参数必须是介于 1 和 2147483647 之间的正整数。不支持像 1e1 这样的科学记法
-
差异隐私 SQL 查询中不支持提示。
-
PySpark 作业中不支持 SQL 查询的提示。要为 PySpark 任务中的执行计划提供指令,请使用数据框 API。有关更多信息,请参阅 Apache Spark DataFrame API 文档
。