[firebase-br] Indice

Eduardo Jedliczka jedyfb em gmail.com
Ter Mar 10 17:32:24 -03 2009


Adriano,  não conheço as regras do seu sistema/negócio, por isto posso
estar falando uma IMENSA besteira...

Me soa muito estranho uma tabela ter 19 FKs, exceto se for um ambiente
para mineração de dados ou um Data Warehouse.

acho que você poderia desmembrar esta tabela (seguir corretamente as
Formas Normais) em várias tabelas menores com relacionamento "1 para n"
ou "1 para 1", assim, evita-se índices pobres e um monte de espaço
desperdiçado com valores NULL.

Como disse, não conheço as regras do negócio, mas não acho "natural"
controlar os lançamentos contábeis na mesma tabela que o movimento
bancário, pois este último é passível de estorno e divergências de data
entre lançamento e compensação.

Sem mais,

Eduardo Jedliczka

Em Ter, 2009-03-10 às 16:15 -0300, Adriano Luiz de Souza escreveu:

> Obrigado pelos esclarecimentos. Sim, tem campos que estao nulos... Essa 
> é uma tabela que armazena lançamentos contabeis, e até o momento, 
> movimento bancário ainda não tem nenhum lançamento contábil armazenado, 
> logo... toda a coluna cd_movimento_bancario, está nulo. Então o firebird 
> está agindo corretamente... Assim que esta tabela começar a ser populada 
> acredito que o plan será escolhido corretamente.
> 
> Adriano
> 
> Douglas Tosi escreveu:
> > 2009/3/10 Adriano Luiz de Souza <adriano em riodeserto.com.br>:
> >   
> >> Mas acho que eu sei qual é o problema... A tabela tem 400.000 registros mas
> >> para este campo no qual estou pesquisando, não há nenhum registro... Pode
> >> ser que isso esteja causando o uso desse plan. Vou testar isso  e depois
> >> posto o resultado.
> >>     
> >
> > Não entendi.
> > O campo está com todos os valores null?
> > Ou a pesquisa "c.cd_movimento_bancario = 400000" não vai encontrar
> > nenhum registro.
> >
> > Se for o primeiro caso, o índice tem péssima seletividade e o plano do
> > firebird está certo.
> > Se for o segundo caso, provavelmente não vai fazer diferença: o
> > otimizador atual do firebird não usa o valor pesquisado para
> > determinar o plano. Pesquisar "400000" ou "17" não faz diferença para
> > o otimizador.
> >
> > hth,
> >   
> 
> 
> ______________________________________________
> 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