[firebase-br] Campo com apenas 2 opções precisa de indice?

Douglas Tosi douglasht em gmail.com
Qui Dez 3 10:32:34 -03 2009


2009/12/3 José Mauricio Barbisan Zottis <bzottis em ig.com.br>:
> pessoal, bom dia, estou com uma dúvida, talvez meia que primária, mas
> tenho uma pesquisa com várias situações (Where .....and .....) ela era bem
> rápida, mas coloquei mais uma opção, mas esta opção tem apenas duas
> situações = 'N' ou = 'S'
> neste caso, precisa de ´ndice?

O índice só será útil se a distribuição de valores não for homogênea e
você for pesquisar por um valor com alta seletividade. Explico: se 99%
dos registros usam S, os outros 1% usam N, e você sempre pesquisa pelo
N então o índice é válido. Se você pesquisar pelo S num caso desses, o
índice não ajuda nada, porque vai retornar 99% dos registros.

Agora se a distribuição é homogênea, mais ou menos metade pra cada
lado, aí o índice também não é útil.
Para qualquer busca que você fizer o índice retorna metade dos
registros da tabela. O custo de ler o índice pode ser maior que o
custo de ler a outra metade da tabela.

Pra entender porque o seu comando ficou lento depois de colocar mais
uma condição, poste aqui o comando e os planos de execução antes e
depois da alteração.

hth,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista