Em 28/06/2011 13:36, Fábio Telles Rodriguez escreveu:
> Índices devem primar pela "seletividade", portanto campos com maior
> variação
> devem figurar primeiro na lista de campos do índice para que cada
> filtro traga o menor número possível de registros, favorecendo assim a
> utilidade e o uso do índice.
>
> Ok, aceito a crítica. Mas você tem algum link que indica isso?
Pesquisando no google por: "index column order matter" você encontra
centenas. Desde a própria wikipedia até inúmeros posts em vários blogs e
várias respostas da lista postgresql-performance.
Eu sempre trabalhei pensando exatamente o contrário do que você pôs em
seu post no blog e consoante ao que o Hasse comentou, acreditando
unicamente nos meus testes.
Tenho uma tabela como você citou em seu texto. que relaciona entregas e
listas. Eu tenho cerca de 35 milhões de entregas, e cerca de 3 milhões
de listas e uma relação N para N entre as duas.
Eu crio dois índices compostos nesta tabela com os campos
[codentrega,codlista], respectivas chaves primárias das tabelas entregas
e listas, um com o campo codentrega primeiro e outro índice com o campo
codlista primeiro.
Uma consulta do tipo "explain select * from listas_detalhe where
codlista = 1165774 and codentrega = 9010356583" vai informar que está
sendo usado sempre o índice onde o primeiro campo tem a maior
seletividade, no caso o campo codentrega. Se seu pensamento estiver
certo, o postgresql está escolhendo o pior índice?
Abraço,
--
Shander Lyrio
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral