Должен ли я указывать как INDEX, так и UNIQUE INDEX?

В одной из моих таблиц PostgreSQL у меня есть набор из двух полей, которые будут определены как уникальные в таблице, но также оба будут использоваться вместе при выборе данных. Учитывая это, мне нужно только определить UNIQUE INDEX, или я должен указать INDEX в дополнение к UNIQUE INDEX?

Это?

CREATE UNIQUE INDEX mytable_col1_col2_idx ON mytable (col1, col2);

Или это?

CREATE UNIQUE INDEX mytable_col1_col2_uidx ON mytable (col1, col2);
CREATE INDEX mytable_col1_col2_idx ON mytable (col1, col2);

Ответы

Ответ 1

Если у вас есть УНИКАЛЬНЫЙ ИНДЕКС, вам также не нужен INDEX - он будет лишним. UNIQUE INDEX - это уникальное ограничение и индекс, который может использоваться как любой другой индекс.

В документации :

Примечание. Предпочтительным способом добавления уникального ограничения в таблицу является ALTER TABLE... ADD CONSTRAINT. Использование индексов для обеспечения уникальных ограничений можно рассматривать как деталь реализации, к которой не следует обращаться напрямую. Однако следует иметь в виду, что нет необходимости вручную создавать индексы по уникальным столбцам; это просто дублирует автоматически созданный индекс.

Акцент мой.