[firebase-br] Query muito lenta!!! Parte III

Alysson Gonçalves de Azevedo agalysson em gmail.com
Qua Jul 11 11:44:47 -03 2012


Cara, é bem complexo para tentar dar sugestões assim sem analisar à fundo,
mas se está nesse ponto, não seria o caso de dividir o select?

Algo como fazer uma query e trazer apenas alguns campos, sem os calculados,
sem os selects internos.
E então, sob demanda, exibir os demais...
Sei que aumentaria a quantidade de solicitações ao servidor, mas acho que
aliviaria muito os 6 segundos de demora do select.

Acho que assim você conseguiria descobrir em quais campos a resposta está
lenta.

Alysson Gonçalves de Azevedo
(11) 8491-7730




2012/7/11 Zottis <bzottis em ig.com.br>

> … Segue o SQL:
>
> select C.COD_CLIENTE, C.DATA_CAD, C.COD_EMPRESA, C.COD_USUARIO,
> C.NOME_FANTASIA,
>        C.RAZAO_SOCIAL, C.ENDERECO, C.NO_CASA, C.BAIRRO, C.CEP,
> C.COD_CIDADE,
>        C.FONE, C.CELULAR, C.FAX, C.CPF_CNPJ, C.RG_INSC, C.CONTATO,
> C.CONTATO_FINANC,
>        C.PROPRIETARIO, C.CPF_PROP, C.RG_PROP, C.DATA_NASC_PROP,
> C.ESTADO_CIVIL_PROP,
>        C.COD_CID_PROP, C.ENDERECO_PROP, C.BAIRRO_PROP,
> C.RESPONSAVEL_TECNICO,
>        C.CPF_RESP_TECNICO, C.RG_RESP_TECNICO, C.COD_FUNCAO, C.CONSELHO_NO,
>        C.COD_DESTINO, C.COD_AREA_ATUACAO, C.COD_TIPO_AREA,
> C.COD_CLASSIF_RESIDUOS,
>        C.EMAIL, C.SITE, C.INICIO_CONTRATO, C.FINAL_CONTRATO,
>        C.PGRSS, C.RESP_TECNICA, C.INTERVALO_COLETA, C.OBS, C.TIPO_BOMBONA,
> C.FORMA_PGTO,
>        C.FORMA_PGTO_ABREV, C.DIA_VENCTO,  C.VALOR_KILO,
>        C.VALOR_KILO_EXCEDE, C.LIMITE_KILO, C.TAXA_RECOLHIMENTO, C.BOMBONA,
> C.EXCLUIDO_POR,
>        C.DATA_EXCLUSAO, C.HORA_EXCLUSAO, C.DELETADO, C.QTD_COLETAS,
> C.DATA_ATUALIZACAO,
>        C.COD_EDITOR, C.RAMAL, C.PESSOA_TIPO, C.ATIVO, C.TAXA_ATRASO,
> C.NOME_MONTADO, C.VALOR_MENSAL, C.COD_GRUPO,
> C.COD_CLIENTE_EMPRESA, C.Proxima_Coleta, C.COD_USU_LIB_VALOR,
> C.FECHA_MANUAL, C.CONTRATO_IMPRESSO, C.COM_NOTA_FISCAL,
> C.COD_MASTER, C.DESCONTO_TAXA, C.TAXA_RETENCAO, C.TIPO_RETENCAO,
> C.TAXA_INSS,
> C.CONTRATO_RETORNADO, C.SERASA, C.CENTRAL_COBRANCA, C.INADIMPLENTE,
> C.BLOQUEADO, C.DATA_ENVIO_CONTRATO, C.DATA_RETOR_CONTRATO,
>
> C.ENDERECO_CORRESP,  C.NO_CASA_CORRESP,  C.BAIRRO_CORRESP,  C.CEP_CORRESP,
> C.COD_CIDADE_CORRESP, C.COLETA_EXTRAORDINARIA, ISOLAR_BUSCA,
> C.com_comodato, C.NF_DESCRICAO, C.RAZAO_SOCIAL_NF, C.CNPJ_NF, C.INSC_NF,
> C.FORMA_ENVIO_BOLETO,
>
>
> (Select G.GRUPO  from GRUPO_CIDADES G where C.COD_GRUPO = G.CODIGO) AS
> GRUPO,
>
> (Select S.LOGIN from usuarios S where C.COD_USUARIO = S.Cod_usuario)AS
> USUARIO,
>
> (Select S.LOGIN from usuarios S where C.COD_EDITOR = S.Cod_usuario) AS
> USUARIO_Editor,
>
> (select min(F.Data_Coleta)from Far_Mtr F where F.cod_cliente =
> C.cod_cliente
> ) as Primeira_Coleta,
>
> (select max(F.Data_Coleta)from Far_Mtr F where F.cod_cliente =
> C.cod_cliente
> ) as ultima_Coleta,
>
> coalesce(
> (select sum(CR.saldo) from ctarec CR where CR.COD_CLIENTE = :varCOD_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 = :varCOD_CLIENTE and CR.deletado = 'N'),0)
> as TotalContas ,
>
> coalesce(
> (select sum(CR.saldo) from ctarec CR where CR.COD_CLIENTE = :varCOD_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 = :varCOD_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 =
> :varCOD_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 = :varCOD_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 = :varCOD_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 = :varCOD_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 =  :varCOD_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 =
> :varCOD_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 =
> :varCOD_CLIENTE and CR.Pago = 'N' and CR.vencimento < current_date and
> CR.deletado = 'N' ),0) as noVencidas,
>
> coalesce(
> (select first 1(V.codigo) from valores_cliente V where V.cod_cliente =
> :varCOD_CLIENTE) ,0) as COD_VALOR
>
> from clientes C
> where   C.deletado = 'N'
>    and C.COD_CLIENTE = :VarCOD_CLIENTE
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista