更新时间: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.

相关文档