PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Chiave primaria composita PostgreSQL

Se crei una chiave primaria composita, su (x, y, z) , PostgreSQL lo implementa con l'aiuto di un UNIQUE indice btree a più colonne su (x, y, z) . Inoltre, tutte e tre le colonne sono NOT NULL (implicitamente), che è la differenza principale tra una PRIMARY KEY e un UNIQUE INDEX .

Oltre alle ovvie restrizioni sui tuoi dati, l'indice a più colonne ha anche un effetto leggermente diverso sulle prestazioni delle query rispetto a tre singoli indici su x , y e z .

Discussione correlata su dba.SE:

  • Lavorare gli indici in PostgreSQL

Con esempi, benchmark, discussioni e prospettive sulla nuova funzionalità delle scansioni solo indice in Postgres 9.2.

In particolare, una chiave primaria su (x, y, z) accelererà le query con condizioni su x , (x,y) o (x,y,z) in modo ottimale. Aiuterà anche con le query su y , z , (y,z) o (x,z) ma in misura molto minore.

Se è necessario velocizzare le query su queste ultime combinazioni, è possibile modificare l'ordine delle colonne nel vincolo PK e/o creare uno o più indici aggiuntivi. Vedi:

  • Un indice composito va bene anche per le query sul primo campo?