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 [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
