更新时间:2026-10-21 GMT+08:00
EXPLAIN AUTOHINT
功能描述
EXPLAIN AUTOHINT用于在正常执行EXPLAIN命令的同时将查询执行的计划信息与执行结果存储于AUTOHINT内存上下文中,以便进行AUTOHINT特性的HINT探索与推荐。
注意事项
- 该语句只允许在AUTOHINT任务进行时由内核进行自动调用,用户自行调用将无任何效果或会触发AUTOHINT的报错阻拦。
- AUTOHINT内存上下文中存储的数据是session级生命周期并且session隔离和用户隔离,当前session下调用的AUTOHINT特性功能用户只能访问并调用当前session、当前用户的数据。
语法格式
EXPLAIN AUTOHINT cache_id exec_type argument FOR statement ;
参数说明
- statement
当前AUTOHINT任务需要进行的计划与执行结果存储的SQL语句。(仅支持SELECT语句)
- cache_id
当前AUTOHINT任务的任务ID,int型。
- exec_type
当前执行该语句所存储的结果类型。
取值范围:
- PLAN:存储计划信息。
- EXECUTE:存储执行结果信息。
- argument
当前执行该语句所需的执行参数,json格式文本。
若exec_type参数为PLAN类型,则为当前语句所应用的HINT。
若exec_type参数为EXECUTE类型,则为当前语句对应执行计划的HASH值。
示例1
1 2 3 4 5 6 7 8 9 10 11 | --AUTOHINT执行语句为对应SQL存储计划信息。 gaussdb=# EXPLAIN AUTOHINT 2 PLAN '{"hints":[{"type": 0, "name": "enable_seqscan", "value": "true"}, {"type": 0, "name": "enable_mergejoin", "value": "false"}]}' FOR SELECT * FROM t1, t2 WHERE t1.id = t2.id and t1.a > 100 and t2.b < 200; --用户直接执行无效。 QUERY PLAN ------------ (0 rows) --用户直接执行被报错阻拦。 gaussdb=# ERROR: Can not get exploration cache for cache id: 2. |
示例2
1 2 3 4 5 6 7 8 9 | --AUTOHINT执行语句为对应SQL存储执行信息。 gaussdb=# EXPLAIN AUTOHINT 2 EXECUTE '{"topology": 740798663, "cards": [18936500, 10592, 9308, 9308]}' FOR SELECT * FROM t1, t2 WHERE t1.id = t2.id and t1.a > 100 and t2.b < 200; --用户直接执行无效。 QUERY PLAN ------------ (0 rows) --用户直接执行被报错阻拦。 gaussdb=# ERROR: Can not get exploration cache for cache id: 2. |
父主题: E