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?