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

PostgreSQL sammensat primær nøgle

Hvis du opretter en sammensat primærnøgle, på (x, y, z) , PostgreSQL implementerer dette ved hjælp af én UNIQUE multi-kolonne btree indeks på (x, y, z) . Derudover er alle tre kolonner NOT NULL (implicit), hvilket er hovedforskellen mellem en PRIMARY KEY og et UNIQUE INDEX .

Udover åbenlyse begrænsninger på dine data, har multi-kolonne indekset også en noget anden effekt på udførelsen af ​​forespørgsler end tre individuelle indekser på x , y og z .

Relateret diskussion på dba.SE:

  • Arbejdning af indekser i PostgreSQL

Med eksempler, benchmarks, diskussion og udsigter til den nye funktion i kun-indeksscanninger i Postgres 9.2.

Især en primær nøgle på (x, y, z) vil fremskynde forespørgsler med betingelser på x , (x,y) eller (x,y,z) optimalt. Det vil også hjælpe med forespørgsler på y , z , (y,z) eller (x,z) men i langt mindre omfang.

Hvis du har brug for at fremskynde forespørgsler på de sidstnævnte kombinationer, vil du måske ændre rækkefølgen af ​​kolonnen i din PK-begrænsning og/eller oprette et eller flere ekstra indekser. Se:

  • Er et sammensat indeks også godt til forespørgsler i det første felt?


  1. VÆLG I en tabelvariabel i T-SQL

  2. Forstå SQL Server ÆNDRINGSTABEL TILFØJ KOLONNE-erklæring

  3. PostgreSQL-indeks på JSON

  4. Hvordan profilerer man PostgreSQL-databasen?