Ако създадете съставен първичен ключ, на (x, y, z) , PostgreSQL реализира това с помощта на един UNIQUE многоколонен btree индекс на (x, y, z) . Освен това и трите колони са NOT NULL (имплицитно), което е основната разлика между PRIMARY KEY и UNIQUE INDEX .
Освен очевидни ограничения върху вашите данни, индексът с няколко колони също има малко по-различен ефект върху производителността на заявките от три отделни индекса на x , y и z .
Свързана дискусия на dba.SE:
- Работа с индекси в PostgreSQL
С примери, сравнителни показатели, дискусии и поглед върху новата функция на сканирането само за индекси в Postgres 9.2.
По-специално първичен ключ на (x, y, z) ще ускори заявките с условия на x , (x,y) или (x,y,z) оптимално. Също така ще помогне със заявки за y , z , (y,z) или (x,z) но в много по-малка степен.
Ако трябва да ускорите заявките за последните комбинации, може да искате да промените реда на колоните във вашето PK ограничение и/или да създадете един или повече допълнителни индекси. Вижте:
- Съставният индекс добър ли е и за заявки в първото поле?