Em 29 de fevereiro de 2016 18:01, Neto pr <neto...@gmail.com> escreveu:
> Mas teria como saber um valor  (nem que for aproximado) de tamanho de
> tabela, em que seria interessante criar um índice (considerando o
> tamanho da ram como referencia)?

Não sei se entendi direito todo o seu questionamento, mas, mesmo que
toda a tabela esteja em memória o acesso a índice é muito mais rápido
que um tablescan, uma varredura completa sobre os registros da tabela
- considerando que ambos estão em memória.

Há alguns casos, claro, conforme o tipo da consulta, que o otimizador
julga um tablescan mais rápido que um indexscan. Isso pode acontecer,
por exemplo, quando você tem uma tabela com dados de produto (de 1 a
10, digamos) e você pesquisa todos os produtos de 1 a 9, excluindo
apenas o 10. Neste caso um tablescan será menos custoso que ter que
pesquisar o índice e depois buscar os registros na tabela (caso hajam
mais colunas na consulta além das existentes no índice). Essa função é
do otimizador interno, e pode ter certeza que ele é mais inteligente
que qualquer pessoa na hora de decidir isso (desde que as métricas
estejam bem atualizadas, portanto o VACUUM ANALYZE é essencial).

Um consenso praticamente unânime dentre os mais experientes da lista é
que otimização precoce é um tiro no pé. Você deve planejar índices
conforme o tipo das consultas que são executadas. Não existe uma
fórmula para dizer se você deve ou não criar um índice com base apenas
em informações de hardware do servidor, tamanho e estrutura das
tabelas.


TIAGO J. ADAMI
http://www.adamiworks.com
@tiadami
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a