SQL Hints
SQL Hints
在 AIR 中 Hint 是为查询处理器针对 SQL 语句强制执行而指定的选项或策略。这些 Hint 会覆盖查询优化器可能为查询选择的任何执行计划。
SQL 语法
/*+ [Options("key"=value, ["key1"=value1])] [,Context("key"=value, ["key1"=value1])] */
SELECT ...
Options 中可以包含所有的 CLUSTER、SESSION 级别可生效的配置参数,详细参数可以参考引擎配置参数。
Context 作为查询上下文内容干预查询优化器的执行计划
| 参数名 | 类型 | 说明 |
|---|---|---|
| include | 字符串,投影ID | 查询改写时可用的投影列表,当列表不为空时不会使用此列表以外的投影,多个投影ID使用逗号分隔 |
| exclude | 字符串,投影ID | 查询改写时需要排除的投影,多个投影ID使用逗号分隔 |
| traceId | 字符串 | 可用于查询时的 SQL 链路标记, 在受支持的数据源下推查询时会带上此 traceId。(受支持的数据源:PG) |
SQL Hints 示例
-- 指导优化器此查询不使用下推优化
/*+ Options("dialect.query.jdbc.pushdown" = false) */ select ...
-- 设置改写只考虑的投影列表
/*+ Context("include"='d1ec2930_1c11_4d75_a37c_590afa4fd4b7') */ select ...
/*+ Context("include"='d1ec2930_1c11_4d75_a37c_590afa4fd4b7,c5bcaf0e_4e6c_46ef_a121_3de8a0e73c5f') */ select ...
-- 设置需要排除的投影列表
/*+ Context("exclude"='d1ec2930_1c11_4d75_a37c_590afa4fd4b7') */ select ...
/*+ Context("exclude"='d1ec2930_1c11_4d75_a37c_590afa4fd4b7,c5bcaf0e_4e6c_46ef_a121_3de8a0e73c5f') */ select ...