Olá pessoal,

Só para deixar documentado o resultado. Utilizei um índice b-tree normal, 
indexando apenas pelo campo em questão. 

Para avaliar rapidamente o espaço em disco, forçei o tamanho do índice com um 
STORAGE (INITIAL 64K NEXT 64K) e o índice só ocupou um bloco, ou seja, só 
incluiu no índice os registros cujo campo estava NOT NULL.

Sobre a cardinalidade: é ALTA e o banco é OLTP. É um campo DATE e terá valores 
muito distintos. Por isso utilizei corretamente o b-tree.

O usuário já populou o campo e rodei o planos com os SQLs que serão utilizados 
pela aplicação e o índice foi utilizado corretamente!

Obrigado a todos pelas sugestões e insights.

Josir.




--- Em oracle_br@yahoogrupos.com.br, José Laurindo <jlchiappa@...> escreveu
>
>   Sim, acho que ninguém discute que certamente uma pesquisa via índice por 
> valores em cima duma coluna com uma cardinalidade tão baixa deve ser muito 
> mais performática que table-scan na tabela toda , mesmo levando-se em conta 
> I/O multiblock e quetais do table scan - o ponto só é que deve ser um índice 
> não-composto, E a coluna tem que ser NULLable E as não-ocorrências de valor 
> TEM que ter a coluna realmente nula (e não com zero ou qquer outro valor 
> artificial) , tudo isso para que quando não esteja presente um valor a a 
> coluna fique NULL e a linha não seja indexada, isso vai poupar muuuuito 
> espaço em disco, E pode ajudar muito em caso de index scan, se essa coluna 
> não for UNIQUE...
> 
>   []s
> 
>       Chiappa
> 
> --- Em oracle_br@yahoogrupos.com.br, Gerson Junior <gerson.vasconcelos@> 
> escreveu
> >
> > Com essa cardinalidade... índice acho que é a melhor opção.
> > 
> > Todos de acordo? Ou temos uma terceira opção?
> > 
> > 
> > 
> > Gerson S. de Vasconcelos Júnior
> > OCA DBA - Oracle Certified Associate
> > Fone: (81) 9816-0236
> > Msn: gerson.vasconcelos@
> > Skype: gersonvjunior
> > http://www.diaadiaoracle.com.br/
> > 
> > 
> > Em 6 de julho de 2011 16:59, Josir <josir@> escreveu:
> > 
> > > **
> > >
> > >
> > > Olá pessoal,
> > >
> > > tenho uma tabela XYZ com milhares de registros e tenho que fazer uma busca
> > > em um campo que é preenchido em menos de 0,01% dos registros existentes.
> > >
> > > Qual a melhor estratégia em termos de performance/utilização de espaço em
> > > disco:
> > >
> > > - Criar um índice na tabela XYZ para este campo ?
> > >
> > > - Ou ter uma segunda tabela com os registros que contem valor no campo em
> > > questão ?
> > >
> > > - Alguem sugere uma terceira opção?
> > >
> > > Saudações a todos.
> > > Josir.
> > >
> > >  
> > >
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>


Responder a