如何優化下面的SQL(我的複雜查詢的簡化視圖)。理想情況下,我應該能夠緩存第一個SQL結果(order ID)並在OrderLine表上進行某種投影第二個查詢。在SQL中緩存內部查詢
任何指針都會有幫助。
限制 - 我無法創建臨時表,光標或過程/函數。我連接到Oracle 10g。
SELECT 'Object_id', id, mod_id FROM
(
(Select 'Order_id', order_id, mod_id FROM Orders)
UNION
(select 'Order_line_id', order_line_id, mod_id FROM OrderLine
WHERE order_id IN (Select order_id FROM Orders)
)
)
得到它之前,我可以提交! –
@karephul使用CTE的想法是,它可以找到結果集,然後在查詢中使用它們。它具有在SQL中允許無限遞歸和圖靈完整性的缺點。 –
@DavidManheim它只允許遞歸達100級,這絕對不會加速查詢。 'CTE'根本不增加任何性能優勢。我大約有99%的積極性,這將會和原來的執行計劃一樣。 – JNK