[firebase-br] Query Muito lenta!!! Parte II
Marcelo Geyer
estanisgeyer em gmail.com
Qua Jul 11 15:51:03 -03 2012
Já experimentou quebrar esse SELECT em pedaços para verificar em que ponto
ele faz o gargalo?
Em 11 de julho de 2012 11:59, Alysson Gonçalves de Azevedo <
agalysson em gmail.com> escreveu:
> Tenho uma duvida que pode ajudar...
>
> Os campos "COMPUTED BY" são calculados toda vez que são exibidos, certo?
> Para cada select que exibe aquele campo, é feito os cálculos novamente,
> seria isso mesmo?
>
> Se sim, todos esses campos computados ai não me parecem que são alterados
> constantemente (como seria, por exemplo, o
> "TOTAL_VENDAS_PROFISSIONAL_NO_MES").
>
> Nesse caso, por que recalcular eles à cada select? Não é melhor criar um
> campo normal para esses valores e atualiza-los por trigger. Assim os
> cálculos seriam feitos apenas quando necessário.
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
>
>
>
> 2012/7/11 Zottis <bzottis em ig.com.br>
>
> > ....Na tabela principal(Clientes) tenho campos calculados.
> >
> >
> >
> > NOME_MONTADO COMPUTED BY (NOME_FANTASIA || ' - '||
> > RAZAO_SOCIAL || ' - '|| (select E.Sigla from Empresa E where Cod_empresa
> =
> > E.Codigo)),
> >
> > PROXIMA_COLETA COMPUTED BY (cast(
> >
> > (select max(F.Data_Coleta)from Far_Mtr F
> > where
> > F.cod_cliente = Clientes.cod_cliente)
> >
> > + Clientes.Intervalo_coleta AS
> date)),
> >
> > SERASA COMPUTED BY (case
> >
> > when (SELECT COUNT (CT.cod_conta) FROM ctarec CT
> WHERE
> > CT.cod_cliente = CLIENTES.cod_cliente and CT.Deletado = 'N' AND
> CT.serasa =
> > 'S' )> 0 then 'S'
> >
> > when (SELECT COUNT (CT.cod_conta) FROM CTAREC CT
> WHERE
> > CT.cod_cliente = CLIENTES.cod_cliente and CT.Deletado = 'N' AND
> CT.serasa =
> > 'S') = 0 then 'N'
> >
> > end),
> >
> > CENTRAL_COBRANCA COMPUTED BY (case
> >
> > when (SELECT COUNT (CT.cod_conta) FROM ctarec CT
> > WHERE CT.cod_cliente = CLIENTES.cod_cliente and CT.Deletado = 'N' AND
> > CT.central_cobranca = 'S' )> 0 then 'S'
> >
> > when (SELECT COUNT (CT.cod_conta) FROM CTAREC CT
> > WHERE CT.cod_cliente = CLIENTES.cod_cliente and CT.Deletado = 'N' AND
> > CT.central_cobranca = 'S') = 0 then 'N'
> >
> > end),
> >
> > COM_COMODATO COMPUTED BY (case
> >
> > when (SELECT COUNT
> (CMT.cod_comodato)
> > FROM comodato CMT WHERE CMT.cod_cliente = CLIENTES.cod_cliente ) > 0 then
> > 'S'
> >
> > when (SELECT COUNT
> (CMT.cod_comodato)
> > FROM comodato CMT WHERE CMT.cod_cliente = CLIENTES.cod_cliente ) = 0 then
> > 'N'
> >
> > end)
> >
> >
> >
> >
> >
> > .....
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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
>
--
Marcelo E. Geyer
Standard Net Tecnologia e Informação
Mais detalhes sobre a lista de discussão lista