我需要不存在一組其他子查詢的所有用戶選擇: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結果的聯合。那麼如何將性能比較放在臨時表中呢? –