通过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影响。影响结果如下表所示:
参数 |
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。 |