
# 优化器GUC参数的Hint
#### 功能描述
设置本次查询执行内生效的查询优化相关GUC参数。hint的推荐使用场景可以参考各GUC参数的说明，此处不作赘述。
#### 语法格式
```
set( [@queryblock] param value)
```
#### 参数说明
- @queryblock请参见[指定Hint所处的查询块Queryblock](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0273.html#ZH-CN_TOPIC_0000002559105637)章节，可省略，表示在当前查询块生效，该hint只在指定为最外层的queryblock时才会生效。
- param：表示参数名。
- value：表示参数的取值。
- 目前支持使用hint设置生效的参数有：
  - 布尔类： enable_bitmapscan、enable_hashagg、enable_hashjoin、enable_indexscan、enable_indexonlyscan、enable_gsiscan、enable_gsitablescan、enable_material、enable_mergejoin、enable_nestloop、enable_index_nestloop、enable_seqscan、enable_sort、enable_tidscan、enable_stream_operator、enable_stream_recursive、enable_broadcast、enable_fast_query_shipping、enable_trigger_shipping、enable_remotejoin、enable_remotegroup、enable_remotelimit、enable_remotesort、enable_inner_unique_opt、enable_invisible_indexes、enable_partition_statistic
    
  
  - 整型类： best_agg_plan，query_dop, join_collapse_limit, from_collapse_limit
    
  
  - 浮点类： cost_weight_index、default_limit_rows、seq_page_cost、random_page_cost、cpu_tuple_cost、cpu_index_tuple_cost、cpu_operator_cost、effective_cache_size
    
  
  - 枚举类： try_vector_engine_strategy
    
  
  - 字符串类： node_name
    通过设置node_name可以指定当前的sql下发到node_name对应的DN上去执行。
    示例：
    ```
    select /*+ set(node_name datanode1) */ from table_name;
    ```
    其中，datanode1是从pgxc_node系统表里查询出的数据节点的名称（不用加引号），table_name是表名。该查询表示直接去datanode1上执行查询。
    ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
    - node_name只支持在select语句里设置，如果在其他语句里设置将不生效。
    
    - node_name只支持设置data node名字，不支持设置coodninator名字。
    
    - node_name不支持通过SET语句进行修改，只能用在plan hint里。
    
    - node_name不支持通过gs_guc进行修改。
    
    - node_name仅支持简单查询语句，不支持带union，union all子查询，多表关联等复杂查询语句。
    
    - 支持普通用户执行。
    
    - 不支持与行级访问控制同时使用，同时使用会报错。
      
   
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 设置不在白名单中的参数，参数取值不合法，或hint语法错误时，不会影响查询执行的正确性。使用explain(verbose on)执行可以看到hint解析错误的报错提示。
- GUC参数的hint只在最外层查询生效，子查询内的GUC参数hint不生效。
- 视图定义内的GUC参数hint不生效。
- CREATE TABLE ... AS ...查询最外层的GUC参数hint可以生效。
 
