sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL samengestelde primaire sleutel

Als u een samengestelde primaire sleutel maakt, op (x, y, z) , PostgreSQL implementeert dit met behulp van een UNIQUE btree-index met meerdere kolommen op (x, y, z) . Bovendien zijn alle drie de kolommen NOT NULL (impliciet), wat het belangrijkste verschil is tussen een PRIMARY KEY en een UNIQUE INDEX .

Naast duidelijke beperkingen op uw gegevens, heeft de index met meerdere kolommen ook een iets ander effect op de prestaties van zoekopdrachten dan drie afzonderlijke indexen op x , y en z .

Gerelateerde discussie over dba.SE:

  • Werking van indexen in PostgreSQL

Met voorbeelden, benchmarks, discussie en visie op de nieuwe functie van index-only scans in Postgres 9.2.

In het bijzonder een primaire sleutel op (x, y, z) versnelt zoekopdrachten met voorwaarden op x , (x,y) of (x,y,z) optimaal. Het helpt ook bij vragen over y , z , (y,z) of (x,z) maar in veel mindere mate.

Als u query's op de laatste combinaties moet versnellen, wilt u misschien de volgorde van de kolommen in uw PK-beperking wijzigen en/of een of meer aanvullende indexen maken. Zie:

  • Is een samengestelde index ook goed voor zoekopdrachten op het eerste veld?


  1. Sla PL/pgSQL-uitvoer van PostgreSQL op in een CSV-bestand

  2. SQLite3.Exception:databaseschijfkopie is verkeerd ingedeeld

  3. MySQL selecteer één kolom DISTINCT, met bijbehorende andere kolommen

  4. Hoe het Amazon RDS-hoofdgebruikerswachtwoord opnieuw in te stellen