[firebase-br] Query muuuiiiitttooo lenta (ainda)
Zottis
bzottis em ig.com.br
Qui Ago 2 23:02:38 -03 2012
Pessoal, postei um problema há algum tempo atrás,
Estou ainda com o dilema, após muitos testes(Sugeridos na lista) ainda
persiste o problema
Resolvi atender a sugestão de dividir a query, a primeira parte, ajudou
muito, mas ainda falta a segunda que é a parte de junções, alguém poderia me
ajudar a otimizar esta query?
Desde já agradeço.
select C.COD_CLIENTE,
coalesce(
(select sum(CR.saldo) from ctarec CR where CR.COD_CLIENTE = :COD_CLIENTE and
CR.Pago = 'N' and CR.deletado = 'N' ),0) as TotalaPagar ,
coalesce(
(select sum(CR.VALOR + CR.VLR_JUROS + CR.DESPESAS_EXTRAS - CR.DESCONTO) from
ctarec CR where CR.COD_CLIENTE = :COD_CLIENTE and CR.deletado = 'N'),0) as
TotalContas ,
coalesce(
(select sum(CR.saldo) from ctarec CR where CR.COD_CLIENTE = :COD_CLIENTE and
CR.Pago = 'N' and CR.vencimento >= current_date and CR.deletado = 'N' ),0)
as TotalAbertas,
coalesce(
(select sum(CR.saldo) from ctarec CR where CR.COD_CLIENTE = :COD_CLIENTE and
CR.Pago = 'N' and CR.vencimento < current_date and CR.deletado = 'N' ),0) as
TotalVencidas,
coalesce(
(select Count(CR.COD_CONTA) from ctarec CR where CR.COD_CLIENTE =
:COD_CLIENTE and CR.Pago = 'S' and
CR.Data_Pgto <= CR.Vencimento and CR.deletado = 'N' ),0) as NoPontuais,
coalesce(
(Select count(CR.COD_CONTA) FROM Ctarec cr where
CR.COD_CLIENTE = :COD_CLIENTE and CR.Pago = 'S' and CR.deletado = 'N' ),0)
as NoCtasPagas,
coalesce(
(Select Count(CR.COD_CONTA) FROM Ctarec cr where
CR.COD_CLIENTE = :COD_CLIENTE and CR.Pago = 'S' and CR.DATA_PGTO >
CR.VENCIMENTO and CR.deletado = 'N' ),0) as NoAtrasoPorcento,
coalesce(
(select Sum(CR.DIAS_ATRASO) from Ctarec cr where
CR.COD_CLIENTE = :COD_CLIENTE and CR.Pago = 'S' and CR.deletado = 'N' ),0)
as AtrasoDias,
coalesce(
(select count(CR.COD_CONTA) from Ctarec cr where
CR.COD_CLIENTE = :COD_CLIENTE and CR.Pago = 'N' and CR.deletado = 'N' ),0)
as NoCtasNaoPagas,
coalesce(
(select count(CR.COD_CONTA) from ctarec CR where CR.COD_CLIENTE =
:COD_CLIENTE and CR.Pago='N' and CR.vencimento >= current_date and
CR.deletado = 'N' ),0) as NoNaovencidas,
coalesce(
(select count(CR.COD_CONTA) from ctarec CR where CR.COD_CLIENTE =
:COD_CLIENTE and CR.Pago = 'N' and CR.vencimento < current_date and
CR.deletado = 'N' ),0) as noVencidas,
min(F.Data_Coleta) as Primeira_Coleta,
max(F.Data_Coleta) as ultima_Coleta,
coalesce(
(select first 1(V.codigo) from valores_cliente V where V.cod_cliente =
:COD_CLIENTE) ,0) as COD_VALOR
from clientes C
left join Far_Mtr F on C.cod_cliente = F.cod_cliente
left join ctarec r on c.cod_cliente = r.cod_cliente
where C.deletado = 'N' and C.cod_cliente = :COD_CLIENTE
group by C.cod_cliente
Mais detalhes sobre a lista de discussão lista