oracle 11 optimizer problem : use of analytic functions prevent usage of index
Hi everybody !
can someone help me on this ?
Oracle version : Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
There are a couple of indexes on tables BALANCE and TRANSACTIONS
idx1 : TRANSACTIONS ( CLIENT, CONTO , DATA_VALUTA )
idx2: BALANCES ( CLIENT, CONTO )
If I try the following :
SELECT * FROM ( SELECT T.CLIENT, S.CONTO, S.DIVISA ,T.DATA_OPERAZIONE, T.DATA_VALUTA, T.DEAL,T.IMPORTO ,CASE WHEN T.IMPORTO<0 THEN 'D' ELSE 'C' END as SEGNO, T.NARRATIVA, SUM(T.IMPORTO) OVER (PARTITION BY T.CONTO ORDER BY T.CONTO, T.DATA_OPERAZIONE, T.DEAL) PROGRESSIVO_MOVIMENTI, S.RT_BALANCE+S.FM_BALANCE SALDO_FINALE, S.RT_BALANCE+S.FM_BALANCE-SUM(T.IMPORTO) OVER (PARTITION BY T.CONTO ORDER BY T.CONTO) SALDO_INIZIALE, SUM(T.IMPORTO) OVER (PARTITION BY T.CONTO ORDER BY T.CONTO) TOT_MOVIMENTI, S.RT_BALANCE+S.FM_BALANCE - SUM(T.IMPORTO) OVER (PARTITION BY T.CONTO ORDER BY T.CONTO) + SUM(T.IMPORTO) OVER (PARTITION BY T.CONTO ORDER BY T.CONTO, T.DATA_OPERAZIONE, T.DEAL) SALDO_PROGRESSIVO FROM BALANCES S, TRANSACTIONS T WHERE T.CONTO=S.CONTO AND S.CLIENT = T.CLIENT AND T.NARRATIVA <> 'ARCHIVED POSTINGS SUMMARY' AND T.NARRATIVA <> 'SALDO AL : 31/10/2008' ) WHERE DATA_VALUTA >= TO_DATE('01012022','ddmmyyyy') AND AND CLIENT=1234 ORDER BY CONTO, DATA_OPERAZIONE, DEAL;