[英]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.