A ordem das colunas é significativa em uma definição de chave primária do Postgresql?

2

O Postgresql permite que você defina uma chave primária usando um grupo de colunas em vez de uma, se desejar, assim:

PRIMARY KEY(a_id, b_id)

Mas a ordem das colunas nesta definição é significativa? Existe alguma diferença prática ou real entre o acima e o abaixo:

PRIMARY KEY(b_id, a_id)

A documentação não aborda isso diretamente. Isso implica que a ordem não deve ser significativa, e quando eu consultar as tabelas information_catalog eu não vejo nada para notar a diferença na ordem dos parâmetros.

Mas o uso do comando \d em duas tabelas usando as definições alternativas e a ordem das colunas, conforme descrito pela saída, é alterado. Aparentemente, há algo em pg_catalog que retém a ordem da definição da chave primária, mas isso implica que existe alguma diferença funcional entre as duas definições?

Obrigado

    
por Radmilla Mustafa 21.05.2015 / 17:46

1 resposta

1

But is the order of the columns in this definition significant? Is there any practical or actual difference between the above and the below:

A ordem das colunas no PRIMARY KEY é significativa porque o índice UNIQUE b-tree subjacente é criado com os atributos nessa ordem e isso afeta a eficiência da pesquisa de índice. Você geralmente quer os atributos mais seletivos primeiro. Isso afeta apenas o desempenho, não altera o significado das consultas.

Não há diferença semântica , porque UNIQUE (a, b) implica UNIQUE (b,a) .

    
por 22.05.2015 / 05:16

Tags