Является ли уникальный ключ сервера Sql также индексом?

У меня есть столбец в таблице (например, UserName), который я хочу убедиться, что он уникален. Поэтому я создаю уникальный ключ для этого столбца и называю его IX_Users_UserName.

Теперь, если я много ищу пользователей по их имени, я хочу убедиться, что для этого поля есть индекс.

Нужно ли создавать отдельный индекс или уникальный ключ также считается индексом, так же как первичный ключ является кластеризованным уникальным ключом?

14.12.2008 04:47:54
Я чувствую необходимость указать, что первичный ключ не является автоматически кластеризованным уникальным ключом. Ваш кластерный индекс не обязательно должен быть на первичном ключе.
Tom H 21.07.2010 19:23:01
Darren Griffith 20.09.2011 19:06:52
3 ОТВЕТА
РЕШЕНИЕ

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

Измените таблицу, чтобы добавить уникальное ограничение для столбца:

ALTER TABLE Авторы ДОБАВИТЬ ОГРАНИЧЕНИЯ IX_Authors_Name UNIQUE (Имя) GO

Источник

Больше информации от MSDN .

FWIW - если ваше ограничение не создает индекс, я бы не стал называть его IX_так, как обычно предполагается, что он связан с индексом (IX = индекс).

40
14.12.2008 05:17:08
Ура :) идеальный ответ. Я также повторно перенесу все свои уникальные ключи в IX и исключу один индекс, который у меня был для этих полей (зачем удваивать ... это плохо!). Ура!
Pure.Krome 14.12.2008 05:21:27
Мне нравится ставить префиксы моих уникальных индексов в отличие от неуникальных индексов: UI или UIX. Великобритания также приемлема, но говорит, что это показатель.
Jean Vincent 8.11.2010 10:12:58

Уникальный ключ - это индекс, я подозреваю, почти каждый продукт базы данных. Должно быть, в противном случае базе данных будет трудно обеспечить ее соблюдение: когда вы вставляете значение, база данных должна ответить: «Это значение уже существует?» Разумный способ сделать это - обратиться к индексу.

Передо мной нет SQL Server для тестирования, но я был бы шокирован, если бы его не было.

1
14.12.2008 04:51:55

По сути, в SQL Server уникальное ограничение действительно реализуется посредством уникального индекса.

Различия между УНИКАЛЬНЫМ ограничением и УНИКАЛЬНЫМ ИНДЕКСОМ на самом деле довольно тонкие. Если вы создаете UNIQUE INDEX, вы можете ссылаться на него в ограничениях внешнего ключа из другой таблицы (не работает, если вы создаете ограничение UNIQUE ....).

Так в чем же разница? Что ж, уникальное ограничение действительно более логично для таблицы - вы хотите выразить намерение, чтобы содержимое данного столбца (или группы столбцов) было уникальным.

Уникальный индекс (как и большинство индексов) - это скорее деталь "закулисной" реализации.

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

20
29.01.2014 12:28:36