[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