问题:Oracle DB使用了一些优化而没有执行
WITH
问题:
是否可以禁用Oracle的优化并在中执行所有查询
与
条款?有什么特别的提示吗?
细节:
Oracle Database Context
我从Java程序执行查询的内部机制。
Database session-based application context initialized locally
上下文类型。
因此,在一个数据库会话中,我可以设置一些上下文变量,只有在该会话中它才可见。
我有一个想法,就是在真正的SQL查询之前执行函数(它设置必要的上下文变量)。所以最好的办法就是把这两件事结合起来。这对我来说是最好的选择。
最小示例:
如果我们执行(或查看explain plan)这个查询,我们会注意到
EXEC_CTX
子查询未执行。
real_table
实际上是由甲骨文执行的。
我们能不能强迫甲骨文执行这两个
与
询问)?
WITH EXEC_CTX AS (
select set_my_ctx(42) from dual
)
SELECT *
FROM real_table rt
WHERE rt.col_x = SYS_CONTEXT('CTX_NAME', 'PARAM_ID')
;