On 02-12-2011 17:05, Moisés P. Sena wrote:
> Criei todos os meus relacionamentos usando ALTER TABLE ADD CONSTRAINT ...
> sendo que a coluna referenciada é CHAVE PRIMARIA da tabela estrangeira.
> Mesmo assim vou ter que criar os indices manualmente?
> 
Não confunda as coisas. Só porque estamos falando de "chave" estrangeira não
significa que devemos ter índice. No caso de junção entre duas tabelas foo e
bar, se bar referencia foo, ou seja, bar tem uma chave estrangeira para foo, o
otimizador vai ser esperto o suficiente para usar o índice da tabela
referenciada (foo); sendo assim, *não* precisamos de índice em bar.

Índices em tabelas que referenciam outras são necessários, quando *não*
utilizamos uma junção com a tabela referenciada e estamos utilizando o campo
da chave estrangeira na cláusula WHERE. Isso nem sempre é uma máxima em todos
os modelos, então tome cuidado ao sair criando um monte de índices inúteis na
sua base de dados. O melhor a fazer é avaliar as consultas e saber se alguma
delas se encaixa no critério descrito neste parágrafo.


-- 
   Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a