

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 提示
<a name="sql-commands-hints-spark"></a>

SQL 分析提示提供了用于指导查询执行策略的优化指令 AWS Clean Rooms，使您能够提高查询性能并降低计算成本。提示建议 Spark 分析引擎应如何生成其执行计划。

## 语法
<a name="hints-syntax"></a>

```
SELECT /*+ hint_name(parameters), hint_name(parameters) */ column_list
FROM table_name;
```

提示使用注释式语法嵌入到 SQL 查询中，必须直接放在 SELECT 关键字之后。

## 支持的提示类型
<a name="supported-hint-types"></a>

AWS Clean Rooms 支持两类提示：联接提示和分区提示。

**Topics**
+ [加入提示](join-hints.md)
+ [分区提示](partitioning-hints.md)

## 组合多个提示
<a name="combining-multiple-hints"></a>

你可以在单个查询中指定多个提示，方法是用逗号分隔它们：

```
-- 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;
```

## 注意事项和限制
<a name="hints-usage-notes"></a>
+ 提示是优化建议，而不是命令。查询优化器可能会根据资源限制或执行条件忽略提示。
+  CreateAnalysisTemplate 和的提示都直接嵌入在 SQL 查询字符串中 StartProtectedQuery APIs。
+ 提示必须直接放在 SELECT 关键字之后。
+ 命名参数不支持带有提示，并且会引发异常。
+ REPARTITION 和 REPARTITION\$1BY\$1RANGE 提示中的列名必须存在于输入架构中。
+ REBALANCE 提示中的列名必须出现在 SELECT 输出列表中。
+ 数字参数必须是介于 1 和 2147483647 之间的正整数。不支持像 *1e1* 这样的科学记法
+ 差异隐私 SQL 查询中不支持提示。
+  PySpark 作业中不支持 SQL 查询的提示。要为 PySpark 任务中的执行计划提供指令，请使用数据框 API。有关更多信息，请参阅 [Apache Spark DataFrame API 文档](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.hint.html)。