Является ли уникальный ключ Sql Server также индексом?
У меня есть столбец в таблице (например. Имя пользователя), который я хочу убедиться, что он уникален. Поэтому я создаю уникальный ключ для этого столбца и называю его IX_Users_UserName.
теперь, если я много ищу пользователей на основе их имени пользователя, я хочу убедиться, что есть индекс для этого поля.
нужно ли создавать отдельный индекс, или уникальный ключ также считается индексом, так же как первичный ключ является кластеризованным уникальным ключом?
3 ответов:
уникальный ключ: уникальный ключ обеспечивает уникальность колонки на которой они определяются. Уникальный ключ создает некластеризованный индекс в столбце. Уникальный ключ допускает только одно нулевое значение.
изменить таблицу, чтобы добавить ограничение уникальности в колонку:
изменить таблицу авторы добавляют ограничение IX_AUTHORS_NAME UNIQUE (Name) GO
больше информации MSDN.
FWIW -- если ваше ограничение не создает индекс, Я бы избегал называть его
IX_как обычно предполагается, что это связано с одним (IX = Index).
в принципе, в SQL Server уникальное ограничение действительно реализуется с помощью уникального индекса.
различия между уникальным ограничением и уникальным индексом довольно тонкие, на самом деле. Если вы создаете уникальный индекс, вы можете ссылаться на это в ограничениях внешнего ключа из другой таблицы (не работает, если вы создаете уникальное ограничение....).
Так в чем же разница? Ну-уникальное ограничение действительно является более логичной вещью на столе - вы хотите выразите намерение, что содержимое данного столбца (или группы столбцов) является уникальным.
уникальный индекс (как и большинство индексов) - это больше "закулисных" деталях реализации.
с моей точки зрения, если у вас действительно нет проблем с этим, я всегда буду использовать уникальный индекс - преимущество быть частью ограничения ссылочной целостности вполне допустимо и может быть очень полезно в некоторых случаях. Функционально, на практике, нет никакой разницы между использованием Уникальное ограничение против уникального индекса, действительно.
уникальный ключ-это индекс, который я подозреваю почти в каждом продукте базы данных. Это должно быть так, иначе база данных будет иметь трудное время для ее применения: когда вы вставляете значение, база данных должна ответить: "это значение уже существует?"Разумный способ сделать это-проконсультироваться с индексом.
У меня нет SQL-сервера передо мной, чтобы проверить, но я был бы шокирован, если бы это не так.
Comments