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