[firebase-br] Campo calculado - vantagens x desvantagens
Hélio Oliveira
hpensador em gmail.com
Sex Fev 6 11:43:15 -03 2015
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
Mais detalhes sobre a lista de discussão lista