nljoin后本来cost就会大幅增加。这里的sort和tablescan是为了让第八步的index fetch 更高效(ordered outer nljoin),这步不是问题所在。问题在于想办法把fetch 150 rows 的动作push down下去。一个办法就是你在这些表上建主外键的constraint,让优化器自己去push down。还有就...
显示全部nljoin后本来cost就会大幅增加。
这里的sort和tablescan是为了让第八步的index fetch 更高效(ordered outer nljoin),
这步不是问题所在。
问题在于想办法把fetch 150 rows 的动作push down下去。
一个办法就是你在这些表上建主外键的constraint,让优化器自己去push down。
还有就是你手工把fetch 150 rows only下压到OMSADM.SO_RET_ORDER的select中。
就是先 select from OMSADM.SO_RET_ORDER fetch 150 rows only再关联。
但是这个得需要满足两个条件:
1.你得连接不会膨胀(从执行计划里看貌似已经满足了) 2.你的连接不会过滤数据。
hczzhong转递归的写法也是条思路,但SQL太复杂。里面那个不等值的子查询改为RETORD_ITEM_ID > TMP.orderItemID 后 fetch 1 rows only 可能好一点。
收起