更新时间:2025-01-10 GMT+08:00
分享

通过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。

示例

  • 指定单表进行计算下推

  • 指定多张表表计算下推

相关文档