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] > > >