Основной
Первичный ключ, как следует из названия, является основным ключом таблицы и должен представлять собой столбец, который обычно используется для выбора строк этой таблицы. Первичный ключ - это всегда уникальный ключ (уникальный идентификатор). Первичный ключ не ограничивается одним столбцом, например, в справочных таблицах (многие ко многим) часто имеет смысл иметь первичный ключ, включающий два или более столбцов.
Уникальная
Уникальный индекс гарантирует, что ваша СУБД не принимает повторяющиеся записи для этого столбца. Вы спрашиваете «Внешние ключи?» НЕТ! Это было бы бесполезно, поскольку внешние определения по определению могут быть дубликатами (один ко многим, многие ко многим).
Индекс
Дополнительные индексы могут быть размещены в столбцах, которые часто используются для SELECTS (и JOINS), что часто имеет место для внешних ключей. Во многих случаях запросы SELECT (и JOIN) будут выполняться быстрее, если внешние ключи проиндексированы.
Обратите внимание, что, как выяснил SquareCog, индексы обновляются при любых изменениях данных, поэтому добавление большего количества индексов может привести к снижению производительности INSERT / UPDATE. Если индексы не обновляются, вы получите различную информацию в зависимости от того, решил ли оптимизатор выполнить ваш запрос по индексу или по необработанной таблице - крайне нежелательная ситуация.
Это означает, что вы должны тщательно оценить использование индексов. На основании этого можно быть уверенным: Следует избегать неиспользуемых индексов, соответственно. удален !