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

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

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 será que 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 consulto as tabelas information_catalog, não vejo nada que note a diferença na ordem dos parâmetros.

Mas usar o \dcomando em duas tabelas usando as definições alternativas e a ordem das colunas conforme descrito na saída muda. Aparentemente há algo pg_catalogque manté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

Responder1

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

A ordem das colunas PRIMARY KEYé significativa porque o UNIQUEíndice da árvore b subjacente é criado com os atributos nessa ordem e isso afeta a eficiência da pesquisa do índice. Geralmente, você deseja primeiro os atributos mais seletivos. Isso afeta apenas o desempenho, não altera o significado das consultas.

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

informação relacionada