On 13-10-2016 08:37, Fernando Franquini 'capin' wrote:
> Mas em princípio ele deve fazer mais bem que mal, porque? Porque toda
> junção com as chaves (FKs) que forem realizadas irão utilizar esse índice.
> 
Isso pode ser verdade em outros bancos (que criam índice para cada FK);
no postgres isso não é. É uma prática comum (criar esses índices) mas eu
particularmente não recomendo porque (i) ocupa espaço, (ii) torna
operações de INSERT, UPDATE e DELETE lentas (porque é necessário manter
os índices atualizados) e (iii) junções vão usar o índice da chave
primária e não o índice da FK. Quando esses índices são úteis? Em
consultas que não fazem a junção com a tabela da chave primária e a
cláusula WHERE inclui o campo da FK (e os valores utilizados são seletivos).

Nos diversos modelos que trabalhei atrevo a dizer que menos de 2% das
consultas vão se beneficiar de um índice em um campo que é FK. Portanto,
eu prefiro ir criando esses índices em FK sob demanda. Em modelos
consolidados, faz-se uma análise de todas as consultas e os planos de
execução vão dizer se o índice na FK é benéfico ou não.

Em modelos migrados de outros SGBDs, após uma análise de uso, observa-se
que a maioria dos índices candidatos a remoção são em FK.


-- 
   Euler Taveira                   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