Estou com problemas na otimização de uma query.
Inicialmente, o custo da query era de 646780, consegui reduzir para 207443, ainda um custo alto.
Em ambas esta me retornando 'ORA 01652: unable to extend temp segment by 128 in tablespace TEMP_ANALYST'.
Inicialmente, a ideia é pegar o período inteiro, sem limitação de data. Gostaria de saber se tem alguma dica, ou a melhor maneira seria criar um relatório diário e popular uma segunda tabela, executando assim a query principal em cima desta tabela 2.
*O uso de HINTS está descartado, visto que por orientação de nosso DBA o consumo estava muito alto no servidor, então o melhor e a otimização das querys e diminuição do uso da CPU.
Seguem os códigos para análise:
01. Query inicial(custo: 646780):
Select 5 ID,
Count(1) QTY,
0 AMOUNT,
nvl(Sum(DECODE(trunc(created_date),trunc(sysdate),0,1)),0) DAY_COUNT,
0 DAY_AMOUNT,
'TRANSACAO' Name,
'TLOG TI Sustentacao Financeiro' ENVIROMENT,
'SENTINELA' Segment,
'AUTORIZACAO COM INFORMACAO ADICIONAL não ENCONTRADA (TOUT_AUTHORIZATION_NONFINANCIAL => TOUT_AUTHORIZATION)' COMMENTS,
Sysdate CREATED_DATE,
Sysdate LAST_UPDATE_TIME
from wtbr_interface.tout_authorization_non_financ gd
where not exists (select 1
from wtbr_interface.tout_authorization a
where a.organization_id = gd.organization_id
and a.authorization_id = gd.authorization_id);
with periodo as(select '5' IDX,
min(nf.created_date) DT_INICIO,
max(nf.created_date) DT_FINAL
from wtbr_interface.tout_authorization_non_financ nf),
gd as (select nf.*,
row_number() over(Partition By nf.organization_id, nf.authorization_id, nf.vehicle_id Order By nf.batch_id Desc) rowline,
(select 1
from wtbr_interface.tout_authorization a
where a.organization_id = nf.organization_id
and a.authorization_id = nf.authorization_id) qtde_transacoes
from wtbr_interface.tout_authorization_non_financ nf
join periodo pr on pr.idx = 5
where nf.created_date between pr.DT_INICIO and pr.DT_FINAL)
Select 5 ID,
Count(1) QTY,
0 AMOUNT,
nvl(Sum(DECODE(trunc(created_date),trunc(sysdate),0,1)),0) DAY_COUNT,
0 DAY_AMOUNT,
'TRANSACAO' Name,
'TLOG TI Sustentacao Financeiro' ENVIROMENT,
'SENTINELA' Segment,
'AUTORIZACAO COM INFORMACAO ADICIONAL não ENCONTRADA (TOUT_AUTHORIZATION_NONFINANCIAL => TOUT_AUTHORIZATION)' COMMENTS,
Sysdate CREATED_DATE,
Sysdate LAST_UPDATE_TIME
from gd
where gd.qtde_transacoes = 0
and gd.rowline = 1;