
# 通过hint方式设置
#### 参数说明及使用
与session中的参数类似，在NDP中我们提供了两种表级（table-level hint）的开关，分别是：
- NDP_PUSHDOWN
- NO_NDP_PUSHDOWN
其中，NDP_PUSHDOWN为启用NDP，NO_NDP_PUSHDOWN为关闭NDP。进行此参数设置时需要指定表。使用方法如下：
```
SELECT /*+ NO_NDP_PUSHDOWN(t) */ * FROM t;// 表t不执行NDP
SELECT /*+ NO_NDP_PUSHDOWN(t, u) */ * FROM t, u; // 表t和u不执行NDP
SELECT /*+ NDP_PUSHDOWN(t1) */ * FROM t as t1; //表t1执行NDP
SELECT /*+ NDP_PUSHDOWN(t) */ * FROM t;                // 表t执行NDP
SELECT /*+ NDP_PUSHDOWN(t1, u1) */ * FROM t as t1, u as u1;  //表t1和u1执行NDP
SELECT /*+ NDP_PUSHDOWN() */ * FROM t as t1, u as u1; //()语法表示为查询块中的所有表启用NDP。
```
#### ndp的table-level hint和ndp_mode的差异
ndp_mode 与ndp 的table-level hint之间的参数设置会相互影响，其中table-level hint的影响会覆盖ndp_mode影响。影响结果如下表所示：
表1参数说明 
| 参数              | set ndp_mode=off                      | set ndp_mode=on            |
|:---|:---|:---|
| NDP_PUSHDOWN    | 对NDP_PUSHDOWN指定的表进行NDP操作，其他表不执行NDP操作。 | 与ndp_mode=on结果一致。          |
| NO_NDP_PUSHDOWN | 与ndp_mode=off结果一致。                    | NO_NDP_PUSHDOWN指定的表不执行NDP。 |
   
#### 示例
- 指定单表进行计算下推 ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002174412453.png "点击放大")
  
- 指定多张表计算下推 ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000002174254033.png "点击放大")
  
 
