[firebase-br] Campo calculado - vantagens x desvantagens
Hélio Oliveira
hpensador em gmail.com
Sex Fev 6 14:07:48 -03 2015
Obrigado Carlos e Gladiston pelas colocações!
Realmente me parece mais viável a utilização de SPs aos campos
calculados nesta minha situação em particular, pois serão muitos campos
sempre com querys complexas como a que postei.
On 06/02/2015 10:43, Hélio Oliveira wrote:
> Bom dia Colegas!
>
> Estou trabalhando no desenvolvimento de um sistema e penso em usar
> bastante o recurso de campos calculados em varias colunas de uma tabela.
> Hoje para teste escrevi a instrução SQL de um dos campos calculados,
> vide abaixo:
>
> SELECT SUM(X.VALOR) - (SELECT SUM(X.VALOR)
> FROM FOLHA X
> JOIN FOLHA_BASE FB ON (FB.COD_EMPRESA =
> X.COD_EMPRESA
> AND FB.MES = X.MES
> AND FB.ANO = X.ANO
> AND FB.SEQUENCIA = X.SEQUENCIA
> AND FB.MATRICULA =
> X.MATRICULA)
> JOIN EVENTO E ON (E.COD_EVENTO = X.COD_EVENTO
> AND E.COD_EMPRESA = X.COD_EMPRESA
> AND E.ESTORNA_BASE_INSS = 'S')
> JOIN PARAMETRO P ON (P.COD_EMPRESA =
> X.COD_EMPRESA
> AND P.FOLHA_MES = X.MES
> AND P.FOLHA_ANO = X.ANO
> AND P.FOLHA_SEQUENCIA =
> X.SEQUENCIA)
> WHERE X.COD_EMPRESA = (SELECT
> RDB$GET_CONTEXT('USER_SESSION', 'id_empresa')
> FROM RDB$DATABASE))
> FROM FOLHA X
> JOIN FOLHA_BASE FB ON (FB.COD_EMPRESA = X.COD_EMPRESA
> AND FB.MES = X.MES
> AND FB.ANO = X.ANO
> AND FB.SEQUENCIA = X.SEQUENCIA
> AND FB.MATRICULA = X.MATRICULA)
> JOIN EVENTO E ON (E.COD_EVENTO = X.COD_EVENTO
> AND E.COD_EMPRESA = X.COD_EMPRESA
> AND E.INSS = 'S')
> JOIN PARAMETRO P ON (P.COD_EMPRESA = X.COD_EMPRESA
> AND P.FOLHA_MES = X.MES
> AND P.FOLHA_ANO = X.ANO
> AND P.FOLHA_SEQUENCIA = X.SEQUENCIA)
> WHERE X.COD_EMPRESA = (SELECT RDB$GET_CONTEXT('USER_SESSION', 'id_empresa')
> FROM RDB$DATABASE);
>
> *Executando o mesmo no IBExpert obtenho o seguinte PLAN (Observação a
> base de dados ainda está vazia).*
>
> Plan
> PLAN (RDB$DATABASE NATURAL)
> PLAN (RDB$DATABASE NATURAL)
> PLAN JOIN (FB NATURAL, X INDEX (PK_FOLHA), E INDEX (PK_EVENTO), P INDEX
> (PK_PARAMETRO))
> PLAN JOIN (FB NATURAL, X INDEX (PK_FOLHA), E INDEX (PK_EVENTO), P INDEX
> (PK_PARAMETRO))
>
> ------ Performance info ------
> Prepare time = 16ms
> Execute time = 0ms
> Avg fetch time = 0,00 ms
> Current memory = 10.393.568
> Max memory = 12.038.880
> Memory buffers = 2.048
> Reads from disk to cache = 0
> Writes from cache to disk = 0
> Fetches from cache = 38
>
> Gostaria da opinião dos nobres, com as vossas experiências posso ter
> problema de lentidão em função desses vários campos calculados?
>
> Será uma vantagem ou desvantagem?
>
> [ ]'s,
> Hélio Oliveira
>
>
> ______________________________________________
> 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