[firebase-br] Query Muito lenta!!! Parte II

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


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
>



Mais detalhes sobre a lista de discussão lista