On 14-06-2013 13:45, Douglas Fabiano Specht wrote:
> a PK por default é clusterizada, 
>
PK clusterizada? Tabelas podem ser agrupadas de acordo com uma ordem
(aka "clusterizadas"); índices tem a sua ordem natural.

Você não pode garantir que tabelas permaneçam agrupadas por padrão por
causa do MVCC.

> Recomendação é deixar sempre do mais restritivo para o menos restritivo,
> logo o correto ao meu ver é ID_VENDA, ID_EMPRESA.
> 
Cuidado! Você deve levar em conta *todas* as consultas realizadas na
referida tabela. Se ID_EMPRESA aparece em todas as consultas é melhor
deixar com que o índice da chave primária seja ID_EMPRESA, ID_VENDA;
caso contrário, você terá que criar um outro índice somente com uma das
colunas para acelerar consultas que utilizam somente a referida coluna.

> pois se vc precisar ir ate o id_venda =876, ele irá praticamente direto,
> agora se for o contrario, ele ira varrer todo o ID_EMPRESA primeiro,
> para depois ir no ID_VENDA.
>
Isso nem sempre é verdade; você deve considerar (repetindo...) *todas*
as consultas que utilizam tal tabela. O otimizador é mais esperto do que
parece. ;)

O ideal é fazer a modelagem e depois da concepção revisar essas coisas.
Não se esqueça que otimização precoce é a raiz de todo mal.


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

Responder a