我有一张有 50 万笔交易的桌子。我想获取特定日期的最后余额。所以我返回了如下查询。
SELECT curr_balance
FROM transaction_details
WHERE acct_num = '10'
AND is_deleted = 'N'
AND ( value_date, srl_num ) IN(
SELECT MAX( value_date ), MAX( srl_num )
FROM transaction_details
WHERE TO_DATE( value_date, 'dd/mm/yyyy' )
<= TO_DATE( ADD_MONTHS( '05-APR-2012', 1 ), 'dd/mm/yyyy' )
AND acct_num = '10'
AND is_deleted = 'N'
AND ver_status = 'Y' )
AND ver_status = 'Y'
这必须以 12 个月的增量执行,以找到每个特定月份的最后余额。但是这个查询有更多的 cpu 成本,12 倍它需要大量的时间。如何重新修改上述查询以更快地获得结果。这是否可以在 PL/SQL 中分为两部分来实现性能。?