-
select -- T.DATE_BEGIN, T.DATE_END, T.OPERATION_DATE, T.STATUS T.*, S.DEV_ID, S.DATE_BEGIN, S.DATE_END, S.INSERT_DATE, U.ACCOUNT, U.NAME, dvbt_deptors.get_debet_saldo('main', s.user_id) SALDO from TABLE(CAST(DVBT_DEPTORS.GET_ON_STATUS('main', '2', 'both', to_char(SYSDATE - 2, 'dd.mm.yyyy'), to_char(SYSDATE + 1, 'dd.mm.yyyy') ) AS DVBT_GETONSTATUS_TABLE ) ) T join MAIN.T_SERVICES S on S.SERV_FIRST_ID = T.SERV_FIRST_ID join MAIN.T_SVC_REF SR on SR.SVC_ID = S.SVC_ID join MAIN.T_USERS U on U.USER_ID = S.USER_ID where SR.COD = '5500' AND SR.ISCONST = 'Y' and dvbt_deptors.get_debet_saldo('main', s.user_id) < 0 order by T.OPERATION_DATE desc
очень уж она накладная, не хотелось бы 2 раза
-
select * from ( select -- T.DATE_BEGIN, T.DATE_END, T.OPERATION_DATE, T.STATUS T.*, S.DEV_ID, S.DATE_BEGIN, S.DATE_END, S.INSERT_DATE, U.ACCOUNT, U.NAME, dvbt_deptors.get_debet_saldo('main', s.user_id) SALDO from TABLE(CAST(DVBT_DEPTORS.GET_ON_STATUS('main', '2', 'both', to_char(SYSDATE - 2, 'dd.mm.yyyy'), to_char(SYSDATE + 1, 'dd.mm.yyyy') ) AS DVBT_GETONSTATUS_TABLE ) ) T join MAIN.T_SERVICES S on S.SERV_FIRST_ID = T.SERV_FIRST_ID join MAIN.T_SVC_REF SR on SR.SVC_ID = S.SVC_ID join MAIN.T_USERS U on U.USER_ID = S.USER_ID where SR.COD = '5500' AND SR.ISCONST = 'Y' ) where SALDO < 0
если так..
-
правда что-то еще дольше стало..
select * from ( select T.DATE_BEGIN TDATE_BEGIN, T.DATE_END TDATE_END, T.OPERATION_DATE, T.STATUS, S.DEV_ID, S.DATE_BEGIN, S.DATE_END, S.INSERT_DATE, U.ACCOUNT, U.NAME, dvbt_deptors.get_debet_saldo('main', s.user_id) SALDO from TABLE(CAST(DVBT_DEPTORS.GET_ON_STATUS('main', '2', 'both', to_char(SYSDATE - 2, 'dd.mm.yyyy'), to_char(SYSDATE + 1, 'dd.mm.yyyy') ) AS DVBT_GETONSTATUS_TABLE ) ) T join MAIN.T_SERVICES S on S.SERV_FIRST_ID = T.SERV_FIRST_ID join MAIN.T_SVC_REF SR on SR.SVC_ID = S.SVC_ID join MAIN.T_USERS U on U.USER_ID = S.USER_ID where SR.COD = '5500' and SR.ISCONST = 'Y' ) A where A.SALDO < 0 order by A.OPERATION_DATE desc
-
>правда что-то еще дольше стало.. не сравнивайте планы
-
> очень уж она накладная, не хотелось бы 2 раза
Во-первых, ее может вычислять один раз оптимизатор - он не дурак. Во-вторых, ее можно засунуть во view В-третьих, по возможности ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'; наше все
-
спасибо
|