PUSH_SUBQ 提示是指导优化器对不可以合并(或展开)的子查询,放到执行计划中尽可能早的步骤上处理,而不是放到执行计划的最后才去处理。当该不可合并视图访问的代价较小,而且还能显著减少处理的行数,那么这样做,可以有效提升SQL的性能。
PUSH_SUBQ 提示的使用语法如下图所示:

其各部分的含义如下: queryblock表示查询块。优化器在为一条SQL制定执行计划时,会将该SQL中涉及的子查询和视图,拆分为相应的查询块。分别为每一个查询块制定执计划。
下面,我们通过实验来说明施加该提示时,优化器是如何处理的。
首先,我们创建测试表TESTTAB,并收集统计信息:
