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

Является ли Sql Server Unique Key также индексом?

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

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

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

4b9b3361

Ответ 1

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

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

ALTER TABLE Авторы ADD CONSTRAINT IX_Authors_Name UNIQUE (Name) GO

Источник

Дополнительная информация из MSDN.

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

Ответ 2

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

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

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

Уникальный индекс (как и большинство индексов) представляет собой более подробную информацию о реализации "за кадром".

С моей точки зрения, если у вас действительно есть проблемы с этим, я всегда буду использовать UNIQUE INDEX - преимущество частичного ограничения ссылочной целостности вполне допустимо и может быть очень полезно в некоторых случаях. Функционально, на практике, нет никакой разницы между использованием уникального ограничения и уникального индекса.

Ответ 3

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

У меня нет SQL Server передо мной, чтобы проверить, но я был бы шокирован, если бы это не так.