[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