Първо, първичните ключове имат за цел да гарантират уникалността на реда, уникалните ключове – на полето. Не че уникалните също не могат да гарантират уникалността на реда, но трябва да са NOT NULL.
Кое е подмножество на кое?
Ключовете са за гарантиране на уникалността на стойностите в поле или на целия ред. Индексите – само за повишаване бързодействието на SELECT заявките, или за други функционалности като FULLTEXT търсене например.
Ключовете прилагат т.н. Integrity Constraints, индексите – не.
Kлючовете не трябва да се променят без да се внимава, защото може да са FOREIGN KEYs. Индексите – могат свободно.