
# Join方式的Hint
#### 功能描述
指明Join使用的方法，可以为Nested Loop，Hash Join和Merge Join。
#### 语法格式
```
[no] nestloop|hashjoin|mergejoin([@queryblock] table_list)
```
#### 参数说明
- @queryblock 见[指定Hint所处的查询块Queryblock](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0274.html#ZH-CN_TOPIC_0000002235270173)章节，可省略，表示在当前查询块生效。
- **no**表示hint的join方式不使用。
 
- **table_list** 为表示hint表集合的字符串，该字符串中的表与[join_table_list](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0276.html#ZH-CN_TOPIC_0000002200189934__zh-cn_topic_0000002235099285_section1280444714345)相同，只是中间不允许出现括号指定join的优先级。
例如：
no nestloop(t1 t2 t3)表示：生成t1，t2，t3三表连接计划时，不使用nestloop。三表连接计划可能是t2 t3先join，再跟t1 join，或t1 t2先join，再跟t3 join。此hint只hint最后一次join的join方式，对于两表连接的方法不hint。如果需要，可以单独指定，例如：任意表均不允许nestloop连接，且希望t2 t3先join，则增加hint：no nestloop(t2 t3)。
#### 示例
对[示例](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0273.html#ZH-CN_TOPIC_0000002235390017__zh-cn_topic_0000002235098917_section671421102912)中原语句使用如下hint:
```
explain
select /*+ nestloop(store_sales store_returns item) */ i_product_name product_name ...
```
该hint表示：生成store_sales，store_returns和item三表的结果集时，最后的两表关联使用nestloop。生成计划如下所示：
![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/figure/zh-cn_image_0000002235100093.png "点击放大")
