Подтвердить что ты не робот

Уникальный индекс или уникальный ключ?

В чем разница между уникальным индексом и уникальным ключом?

4b9b3361

Ответ 1

Уникальное произведение не в том, в чем разница. Индекс и ключ не одно и то же, и они не сопоставимы.

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

Из документов:

Уникальный индекс

Создает уникальный индекс для таблицы или представления. Уникальный индекс - это индекс, в котором две строки не могут иметь одинаковое значение ключа индекса. Кластерный индекс в представлении должен быть уникальным

Уникальный ключ (ограничение)

Вы можете использовать ограничения UNIQUE, чтобы удостовериться, что никакие повторяющиеся значения не введены в определенные столбцы, которые не участвуют в первичном ключе. Хотя и ограничение UNIQUE, и ограничение PRIMARY KEY обеспечивают уникальность, используйте ограничение UNIQUE вместо ограничения PRIMARY KEY, если вы хотите применить уникальность столбца или комбинации столбцов, которые не являются первичным ключом.

Ответ 2

Эта статья статья MSDN, сравнивающая эти два, - это то, что вам нужно. Терминология такова, что "ограничение" - это ANSI, но в SQL Server вы не можете отключить уникальное ограничение...

Для большинства целей нет разницы - ограничение выполняется как индекс под обложками. Статья MSDN подтверждает это - разница в метаданных, например:

  • настройка FILLFACTOR
  • INCLUDE обеспечивает более эффективные индексы покрытия (составные ограничения)
  • Отфильтрованный индекс похож на ограничение по подмножеству строк/игнорировать множественный нуль и т.д.

Ответ 3

"Уникальный ключ" - тавтология. Ключ (AKA "Ключ кандидата" ) - это логическая функция базы данных - ограничение, которое обеспечивает уникальность набора атрибутов в таблице.

Индекс - это функция физического уровня, предназначенная для оптимизации производительности в некотором роде. Существует множество типов индексов.

Ответ 4

Оба ключа (aka keyword) и index являются идентификаторами строки таблицы.
Хотя индекс представляет собой структуру параллельной идентификации, содержащую указатель на идентифицированную строку, тогда как ключи являются членами поля in situ.

Ключ, как идентификатор, подразумевает уникальность (ограничение) и NOT NULL (ограничение). В NULL нет смысла в качестве идентификатора (как null не может идентифицировать что-либо), а также неединичной идентифицирующей ценности.
Некластеризованный индекс может содержать реальные данные, не служащие в качестве идентификатора для реальных данных, и поэтому быть неспецифическим [1]

Неудачная практика заключается в том, что ключ или индекс (идентификатор) вызывается ограничением (правилом или ограничением), с которым следуют предыдущие ответы.

Ключи используются в контексте:

  • альтернативный, ака вторичный, или ключи кандидата, может быть несколько.
  • составной ключ (несколько полей объединены)
  • первичный ключ (superkey), натуральный или суррогатный ключ, только один, действительно используемый для ссылочной целостности.
  • внешний ключ

Внешний ключ - это ключ в другой таблице (где это первичный ключ) и даже не ключ, к которому они часто относятся. Такое использование объясняется путающим сокращением термина "ограничение внешнего ключа" до "внешнего ключа".

Ограничение первичного ключа на самом деле подразумевает ограничения NOT NULL и UNIQUE +, которые ссылаются на столбцы (или комбинированные столбцы), являются идентификаторами, а также, к сожалению, заменены "первичным ключом" или "ограничением первичного ключа", в то время как оба они не могут быть вызваны только (первичный ключ) или только (основной) ключ.


Обновление:
Мой вопрос:
[1]
УНИКАЛЬНЫЙ аргумент для создания INDEX - зачем?

Ответ 5

Уникальный ключ: Это ограничение, которое накладывает ограничения на базу данных. Это ограничение не позволит дублировать значения. Например, если вы хотите выбрать один столбец в качестве первичного ключа, он должен быть NOT NULL и UNIQUE.

Уникальный индекс:. Это индекс, который повышает производительность при выполнении запросов в вашей базе данных. В уникальном индексе он также не позволяет дублировать значения в индексе. т.е. нет двух строк, имеющих одинаковое значение ключа ключа.