sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL sammansatt primärnyckel

Om du skapar en sammansatt primärnyckel, på (x, y, z) , PostgreSQL implementerar detta med hjälp av en UNIQUE btree-index med flera kolumner på (x, y, z) . Dessutom är alla tre kolumnerna NOT NULL (implicit), vilket är huvudskillnaden mellan en PRIMARY KEY och ett UNIQUE INDEX .

Förutom uppenbara begränsningar för din data, har indexet med flera kolumner också en något annorlunda effekt på prestandan för frågor än tre individuella index på x , y och z .

Relaterad diskussion på dba.SE:

  • Arbeta med index i PostgreSQL

Med exempel, riktmärken, diskussion och syn på den nya funktionen för endast indexskanningar i Postgres 9.2.

I synnerhet en primärnyckel på (x, y, z) kommer att påskynda frågor med villkor på x , (x,y) eller (x,y,z) optimalt. Det kommer också att hjälpa till med frågor på y , z , (y,z) eller (x,z) men i mycket mindre utsträckning.

Om du behöver snabba upp frågorna om de senare kombinationerna, kanske du vill ändra kolumnordningen i din PK-begränsning och/eller skapa ett eller flera ytterligare index. Se:

  • Är ett sammansatt index också bra för frågor i det första fältet?


  1. Oracle hur man exporterar en fråga till en text/csv-fil

  2. Chen Notation

  3. Är mysql_real_escape_string() och mysql_escape_string() tillräckliga för appsäkerhet?

  4. Vad är skillnaden mellan AS och IS i en Oracle-lagrad procedur?