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


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

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

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

3 51

3 ответа:

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

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

ALTER TABLE авторы добавляют ограничение IX_AUTHORS_NAME UNIQUE (Name) GO

Источник

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

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

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

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

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

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

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

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

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