[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