Как PostgreSQL обеспечивает соблюдение ограничения UNIQUE / какой тип индекса он использует?

Я пытался разобраться в взаимосвязи между уникальным и индексом в Postgres после прочтения документов об уникальности индекса, являющейся деталью реализации :

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

Итак, поверив документам, я собираюсь просто объявить вещи как уникальные и использовать неявный индекс - или - создать индекс, а не предполагать, что значения уникальны. Это ошибка?

Какой индекс я получу от unique? Учитывая, что только btree принимает ограничение unique, а unique неявно создает индекс, правда ли, что UNIQUE создает индекс btree? Я не хочу непреднамеренно запускать диапазоны в хеш-индексе.

11
задан Erwin Brandstetter 5 November 2014 в 17:43
поделиться