簡體   English   中英

如何避免遞歸Oracle SQL查詢

[英]How to avoid recursive oracle sql query

我們有一個PL / SQL過程來計算帳戶余額。 有兩個表,帳戶和交易。 該過程遍歷所有帳戶,並且每個帳戶並行運行此查詢! (某天的+和-交易總和):

SELECT sum(claim) - sum(debt)
FROM transactions
WHERE account_id = :b3
  AND currency_id = :b2
  AND account_type = 2
  AND date > :b1

當時有超過一百萬個帳戶,並且交易數量相近,因此此pl / sql會創建大量查詢,並占用大量cpu和時間來完成(並殺死正在運行的計算機)。

有沒有一種方法可以通過使用總和account_id和currency_id或通過將總和放入關聯數組sum [account_id,currency_id]中,就像在awk中那樣,在一次通過交易表(而不是百萬次通過)中計算此金額? 會更快嗎? 當然,最后必須在余額表中插入總計。

如果只希望所有account_id / currency_id組合:

SELECT account_id, currency_id , sum(claim) - sum(debt)
FROM transactions
WHERE account_type = 2
  AND date > :b1
GROUP BY account_id, currency_id 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM