sql >> Databáze >  >> RDS >> PostgreSQL

Složený primární klíč PostgreSQL

Pokud vytvoříte složený primární klíč, na (x, y, z) , PostgreSQL to implementuje pomocí jednoho UNIQUE vícesloupcový index btree na (x, y, z) . Všechny tři sloupce jsou navíc NOT NULL (implicitně), což je hlavní rozdíl mezi PRIMARY KEY a UNIQUE INDEX .

Kromě zjevných omezení pro vaše data má vícesloupcový index také poněkud odlišný vliv na výkon dotazů než tři jednotlivé indexy na x , y a z .

Související diskuze na dba.SE:

  • Práce s indexy v PostgreSQL

S příklady, srovnávacími testy, diskusí a výhledy na novou funkci pouze indexové skenování v Postgresu 9.2

Konkrétně primární klíč na (x, y, z) urychlí dotazy s podmínkami na x , (x,y) nebo (x,y,z) optimálně. Pomůže také s dotazy na y , z , (y,z) nebo (x,z) ale v mnohem menší míře.

Pokud potřebujete urychlit dotazy na poslední kombinace, možná budete chtít změnit pořadí sloupců v omezení PK a/nebo vytvořit jeden nebo více dalších indexů. Viz:

  • Je složený index vhodný také pro dotazy na první pole?


  1. Jak převést čas na časové pásmo zařízení iPhone?

  2. Nejrychlejší způsob, jak najít vzdálenost mezi dvěma zeměpisnými/délkovými body

  3. Zkontrolujte, zda tabulka na serveru SQL existuje

  4. Vrácení více tabulek z uložené procedury