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

Zottis bzottis em ig.com.br
Qua Jul 11 16:31:43 -03 2012


Deu esse erro:

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
C.COD_CLIENTE.
At line 79, column 34.



-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Felix - SOL Informática
Enviada em: quarta-feira, 11 de julho de 2012 13:58
Para: 'FireBase'
Assunto: [firebase-br] RES: Query muito lenta!!! Parte III

Cara, que query enorme, dá até canseira de ler kkkk

Por que usar o campo cod_conta no count? Não pode ser qualquer outro campo?

Vai minha sugestão, não testada - afinal não tenho esse cenário - favor
informar o resultado, fiquei curioso :-)

 select C.COD_CLIENTE, (coloque aqui os outros campos necessários do
cadastro do cliente)
	G.GRUPO,
	s.LOGIN            as USUARIO,
	min(F.Data_Coleta) as Primeira_Coleta,
	max(F.Data_Coleta) as ultima_Coleta,
	(Select first 1 V.codigo from Valores_Cliente V where C.Cod_Cliente
= V.Cod_Cliente) as COD_VALOR,
	(Select SE.LOGIN from usuarios SE where C.COD_EDITOR =
SE.Cod_usuario) AS USUARIO_Editor,

       sum  (x.VALOR + x.VLR_JUROS + x.DESPESAS_EXTRAS - x.DESCONTO) as
totalcontas,
	sum  (case when(x.pago='N'                                  then
x.saldo else 0    end) as TotalaPagar,
	sum  (case when(x.pago='N' and x.vencimento >= current_date then
x.saldo else 0    end) as TotalAbertas,
	sum  (case when(x.pago='N' and x.vencimento <  current_date then
x.saldo else 0    end) as TotalVencidas,
	count(case when(x.pago='S' and x.data_pgto  <= x.vencimento then
x.saldo else null end) as NoPontuais,
	count(case when(x.pago='S'                                  then
x.saldo else null end) as NoCtasPagas,
	count(case when(x.pago='S' and x.data_pgto  >  x.vencimento then
x.saldo else null end) as NoAtrasoPorcento,
	sum  (case when(x.pago='S'                                  then
x.dias  else 0    end) as AtrasoDias,
	count(case when(x.pago='N'                                  then
x.saldo else null end) as NoCtasNaoPagas,
	count(case when(x.pago='N' and x.vencimento >= current_date then
x.saldo else null end) as NoNaoVencidas,
	count(case when(x.pago='N' and x.vencimento <  current_date then
x.saldo else null end) as NoVencidas

 from clientes C
 left join GRUPO_CIDADES   G on C.COD_GRUPO   = G.CODIGO 
 left join usuarios        S on C.COD_USUARIO = S.Cod_usuario
 left join Far_Mtr         F on C.cod_cliente = F.cod_cliente

 left join (select r.valor, 
		   r.vlr_juros, 
		   r.despesas_extras, 
		   r.desconto, 
		   r.saldo, 
		   r.dias_atraso as dias, 
		   r.pago,
		   r.vencimento, 
		   r.data_pgto,
		from ctarec r 
		where c.cod_cliente = r.cod_cliente and r.deletado = 'N'
           ) X on c.cod_cliente = x.cod_cliente

 where C.COD_CLIENTE = :VarCOD_CLIENTE and C.deletado = 'N'


Francisco Felix
www.solsistemas.com

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Alysson Gonçalves de Azevedo Enviada em: quarta-feira, 11 de julho
de 2012 11:45
Para: FireBase
Assunto: Re: [firebase-br] Query muito lenta!!! Parte III

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
>
______________________________________________
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


______________________________________________
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