[firebase-br] Índice de expressão e stored procedure

Daniel / Tecnobyte temp2 em tecnobyte.com.br
Qua Abr 9 11:36:01 -03 2008


Carlos Cantu

Realmente era este o problema. Removi tudo que tinha do Firebird nas pastas 
e registro do Windows e instalei o 2.1 novamente. Agora ficou perfeito.

Para ficar ainda mais xique o FB poderia permitir que o índice fosse criado 
como

CONSTRAINT UN_Pessoa_Identidade UNIQUE(COMPUTED BY(udf_NumDoc(Identidade)))

pois só consegui criá-lo assim:

CREATE UNIQUE ASC INDEX Idx_Pessoa_Identidade
  ON Pessoa COMPUTED BY(udf_NumDoc(Identidade));

De qualquer forma, ficou muito bom. Agora tenho as opções abaixo para 
escolher a melhor:

a) Indexar usando UDF: o principal problema neste caso é a dependência de 
DLL, mas há também a necessidade de chamar a função em cada SELECT (não é 
tão ruim assim).

b) Criar uma duplicata do campo, onde gravaria sem formatação para indexar: 
precisaria usar trigger para manter o campo, haveria redundância de dados no 
banco. Muita gambiarra!

c) Gravar tudo sem formatação. Mas como a identidade segue formato distinto 
conforme o órgão expedidor e UF, ficaria esquisito para mostrar isto em 
relatórios e consultas sem formatar. Não tenho como criar uma rotina de 
formatação, pois desconheço os formatos existentes.

d) Não usar índice: mas o desempenho ficaria horrível!

Então acho que vou ficar mesmo com a UDF por enquanto. É a que apresenta o 
melhor custo x benefício. Além de que existem outros campos na mesma 
condição para serem tratados da mesma forma.

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática

Quer usar o Tecnobyte SAC em rede?
Acesse: www.tecnobyte.com.br/sac_plus.html

----- Original Message ----- 
From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, April 09, 2008 9:33 AM
Subject: Re: [firebase-br]Índice de expressão e stored procedure


DT> O único inconveniente que sobrou agora é que no Firebird 2.1.0.17735 a
DT> mensagem de erro não inclui o nome do índice, o que me gera outro 
problema
DT> (tradução das mensagens de erro na aplicação).

Tem certeza? O que pode estar ocorrendo é que o FB 2.1 está usando o
arquivo de mensagens do FB 2.0 (por causa da chave no registro do
windows).

Experimente remover a chave do registro, reiniciar o servidor e fazer
o teste novamente.

Se for bug mesmo, vc pode reportar no bugtracker do FB.

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
Blog - http://blog.firebase.com.br



______________________________________________
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