PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Clé primaire composite PostgreSQL

Si vous créez une clé primaire composite, sur (x, y, z) , PostgreSQL implémente cela à l'aide d'un UNIQUE index btree multi-colonnes sur (x, y, z) . De plus, les trois colonnes sont NOT NULL (implicitement), qui est la principale différence entre une PRIMARY KEY et un UNIQUE INDEX .

Outre les restrictions évidentes sur vos données, l'index multi-colonnes a également un effet quelque peu différent sur les performances des requêtes que trois index individuels sur x , y et z .

Discussion connexe sur dba.SE :

  • Travail des index dans PostgreSQL

Avec des exemples, des points de repère, des discussions et des perspectives sur la nouvelle fonctionnalité des analyses d'index uniquement dans Postgres 9.2.

En particulier, une clé primaire sur (x, y, z) accélérera les requêtes avec des conditions sur x , (x,y) ou (x,y,z) de manière optimale. Cela aidera également les requêtes sur y , z , (y,z) ou (x,z) mais dans une bien moindre mesure.

Si vous avez besoin d'accélérer les requêtes sur ces dernières combinaisons, vous pouvez modifier l'ordre des colonnes dans votre contrainte PK et/ou créer un ou plusieurs index supplémentaires. Voir :

  • Un index composite est-il également adapté aux requêtes sur le premier champ ?