我需要不存在一组其他子查询的所有用户选择:PLSQL避免代码重复
SELECT user_id
FROM (<userSubQuery1>)
WHERE
user_id NOT IN (<badUserSubQueryA>) AND
user_id NOT IN (<badUserSubQueryB>) AND
user_id NOT IN (<badUserSubQueryC>)
只有我需要做NOT IN过滤器在许多不同的查询,其中userSubQuery和badUserSubQueries可能会有所不同。例如:
SELECT user_id
FROM (<userSubQuery2>)
WHERE
user_id NOT IN (<badUserSubQueryB>) AND
user_id NOT IN (<badUserSubQueryC>) AND
user_id NOT IN (<badUserSubQueryD>)
所有的子查询,无论我是从选择和在不在使用一次的那些很复杂,所以我不希望复制的而不是代码中的子查询通常是相同的(在我的例子中,badUserSubQueryB和badUserSubQueryC)。
我可以用动态sql实现这一点,但我宁愿不,如果我能避免它。可能吗?
因为它是oracle,你也可以为每个子查询使用物化视图。 – Joe
如何不使用性能影响和资源耗尽实现来解决开发过程中实际存在的问题? – APC
我认为有一个函数返回一个plsql集合,其中包含所有badUserSubQueries结果的联合。那么如何将性能比较放在临时表中呢? –