Euler,

Eu trabalhei bastante com Oracle e SQL Server, posso afirmar que faziam
diferença e concordo com os pontos (i) e (ii).

Porém em relação a junção fiquei em dúvida no item (iii):

Se a PK da tabela A é FK na tabela B, ao realizar a junção de A com B e
usar a coluna FK vai usar o indice da PK na A e na B nada??

Obrigado pelas colocações.
Abraços.

2016-10-13 11:16 GMT-03:00 Euler Taveira <eu...@timbira.com.br>:

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



-- 
Capin
Graduado: Bacharel em Ciências da Computação - UFSC
Analista de Sistemas e de Banco de Dados / DBA
48.9924.8212 Vivo - Florianópolis - SC - Brasil
<http://franquini.wordpress.com/>
http://certificacaobd.com.br/
http://br.linkedin.com/in/capin
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a