[firebase-br] Campo Computed By
Gladiston Santana
gladiston em vidy.com.br
Seg Jan 4 15:20:20 -03 2016
Eu uso muito campos calculados, alguns para transcrever mnemônicos ou
situações,ex:
CREATE TABLE blabla(
...
CASE
WHEN (status='A') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')<'1990-01-01') AND (CURRENT_DATE >
DT_PREV_ENVIO) THEN 'Aberta e envio expirado('||trim(prioridade_com)||')'
WHEN (status='A') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')<'1990-01-01') THEN 'Aberta e não
enviada('||trim(prioridade_com)||')'
WHEN (status='A') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')>'1990-01-01') THEN 'Aberta e
enviada anteriormente('||trim(prioridade_com)||')'
WHEN (status='A') AND
(COALESCE(DT_DESFECHO,'1980-01-01')>'1990-01-01') THEN 'Aberta e
enviada('||trim(prioridade_com)||')'
WHEN (status='C') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')<'1990-01-01') AND
(DT_PREV_ENVIO<'1990-01-01') THEN 'Cancelada, porém não enviada'
WHEN (status='C') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')>'1990-01-01') THEN 'Cancelada,
mas enviada'
WHEN (status='D') THEN 'Desistencia'
WHEN (status='S') THEN 'Suspensa'
WHEN (status='R') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')<'1990-01-01') THEN 'Revisada,
porém nunca enviada'
WHEN (status='R') AND
(COALESCE(dt_primeiro_envio,'1980-01-01')>'1990-01-01') THEN 'Revisada, mas
enviada anteriormente'
WHEN (status='P') THEN 'Perdida para o concorrente'
WHEN (status='F') THEN 'Vencemos'
END),
LAST_UPDATE D_CURRENT_TIME /* D_CURRENT_TIME = TIMESTAMP
DEFAULT CURRENT_TIMESTAMP NOT NULL */,
LAST_OWNER D_CURRENT_USER /* D_CURRENT_USER = VARCHAR(30)
DEFAULT USER NOT NULL */,
MODIFICADO_EM COMPUTED BY (CAST((SUBSTRING(CAST(LAST_UPDATE as
varchar(30)) FROM 1 FOR 10)||' por '||LAST_OWNER) as varchar(40)))
Isso resolve muitas coisas, existe os lookups table como eu chamo isso que
você deseja fazer e não acho que seja um problema desde que você só chame
este campo quando realmente precisar e nunca use select * from.
Em 28 de dezembro de 2015 15:34, Douglas Atilas <datilas em r7.com> escreveu:
> Eu gostria de saber se o uso de campos computed com select pode causar
> queda de performance no firebird,
> pergunto pois o uso desses campos seria ótimo evitando usar inner join nas
> consultas sql views etc... mas caso isso possa causar alguma perda de
> performance no banco (não usarei),
> nos testes que fiz não percebi nenhuma queda (na verdade houve melhora na
> resposta do select visto que não precisei usar inner, left ...)
> eu gostaria de uma resposta mais conclusiva. caso alguém possa me
> responder.
> eu gostaria de saber tambem se existe um limite para uso desses campos
> (tamanho, quantidade)
> estou usando assim:
> ALTER TABLE ACADPROD ADD GPRNOME COMPUTED BY ((SELECT ACADGPRD.DESCRICAO
> FROM ACADGPRD WHERE ACADGPRD.CODIGO = ACADPROD.GRUPO))
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>
--
--
B em B@BU iB em M@B. B em MBBO MBBMMB em B@BZLr E@@@@i r@@@BU
vB em M@O E em B@Bu BBBM em 0 G em MMM@N8MBB em ZP5r B em B@k 8B@@O
OB em B@q 2 em BBBM B em B@BO BB em B@B,.:,7B em B@@L uB em B@, OB em B@.
,@@@B@ @BBB@, @BBB em 8 M em M@@@ PB em B@B @@@BN iB em B@L
U em B@B2 LB em B@X B em MBBO MBBM em B i em BBB@. 7 em B@Bi B em B@E
B@@@BiM em M@B. @BBM em G M em MMB@ v@@M em B, G em B@Z v em B@B.
7B em B@O em B@B5 B em B@B8 BBBM em B Z@@@B@ iB@@@2 em B@Br
NB em M@B em B8 @B em B@8 M em B@B em i:i75 em B@B em r E@@B em B@Bq
. em B@@@B@: B em B@B@ @B@@@B em B@B@@@ME; .BB em MBB@
55.ANOS OMOGBS PBZGGOOMOO117, 7 em BBB@r
==============================================r@@@@F=====
Gladiston Santana 8 em B@B,
Supervisor de TI G em B@B7
Tel.:+551147873122 R:228 :@B em B0
Grupo VIDY - SGQ ISO9001 - 55 ANOS @B em B@.
Visite nosso site: www·vidy·com·br BB@@@u
Visite também : www·expolabor·com·br GB em B@N
Mais detalhes sobre a lista de discussão lista