PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Chave primária composta PostgreSQL


Se você criar uma chave primária composta, em (x, y, z) , o PostgreSQL implementa isso com a ajuda de um UNIQUE índice btree de várias colunas em (x, y, z) . Além disso, todas as três colunas são NOT NULL (implicitamente), que é a principal diferença entre uma PRIMARY KEY e um UNIQUE INDEX .

Além das restrições óbvias em seus dados, o índice de várias colunas também tem um efeito um pouco diferente no desempenho das consultas do que três índices individuais em x , y e z .

Discussão relacionada em dba.SE:
  • Trabalho de índices no PostgreSQL

Com exemplos, benchmarks, discussões e perspectivas sobre o novo recurso de varreduras somente de índice no Postgres 9.2.

Em particular, uma chave primária em (x, y, z) irá acelerar as consultas com condições em x , (x,y) ou (x,y,z) Otimamente. Também ajudará com consultas em y , z , (y,z) ou (x,z) mas em muito menor grau.

Se você precisar acelerar as consultas nas últimas combinações, poderá alterar a ordem das colunas em sua restrição PK e/ou criar um ou mais índices adicionais. Ver:
  • Um índice composto também é bom para consultas no primeiro campo?