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


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

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

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

3   51   2008-12-14 07:47:54

3 ответа:

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

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

изменить таблицу авторы добавляют ограничение IX_AUTHORS_NAME UNIQUE (Name) GO

источник

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

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

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

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

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

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

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

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

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