Поделиться через


Практическое руководство. Создание уникальных индексов

В SQL Server можно создать уникальный индекс для уникального столбца (например, employee id) или для набора столбцов, который в совокупности однозначно определяет каждую запись (например, author + title).

Например, если планируется часто запрашивать столбец с номером социального страхования (ssn) в таблице employee (где первичным ключом является emp_id) и нужно гарантировать уникальность номеров социального страхования, то можно создать индекс для столбца ssn. Если пользователь введет один и тот же номер социального страхования для более чем одного сотрудника, то база данных отобразит ошибку и сохранить таблицу будет невозможно. Дополнительные сведения об уникальных индексах см. в разделе "Правила по созданию уникальных индексов" на веб-узле корпорации Майкрософт.

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

Примечание

Новая версия конструктора таблиц отображается для баз данных в формате SQL Server 2012. В этом разделе описывается старая версия конструктора таблиц, которая используется с базами данных в более ранних форматах SQL Server.

В новой версии определение таблицы можно изменить через графический интерфейс или непосредственно в области скриптов. Если вы используется графический интерфейс, определение таблицы автоматически обновляется в области скриптов. Чтобы применить код SQL в области скриптов, нажмите кнопку Обновить. Дополнительные сведения о новой версии см. в разделе Как создавать объекты базы данных с помощью конструктора таблиц.

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Для создания уникального индекса

  1. В обозревателе серверов выберите таблицу базы данных, которую требуется открыть.

  2. В меню База данных выберите Открыть определение таблицы.

    Таблица откроется в конструкторе таблиц.

  3. В меню Конструктор таблиц выберите пункт Индексы и ключи.

  4. Нажмите кнопку Добавить. В списке Выбранный первичный/уникальный ключ или индекс будет показано имя нового индекса, назначенное системой.

  5. Находясь в сетке, щелкните Тип.

  6. Выберите Индекс в раскрывающемся списке справа от свойства.

  7. В списке Имя столбца выберите столбцы, которые необходимо проиндексировать. Выбрать можно до 16 столбцов. Для оптимальной производительности следует выбирать только один или два столбца на индекс. Для каждого выбранного столбца укажите, будут ли значения данного столбца располагаться в индексе в возрастающем или убывающем порядке.

  8. Находясь в сетке, щелкните Уникальный.

  9. Выберите Да в раскрывающемся списке справа от свойства.

  10. Выберите параметр Пропустить повторяющиеся ключи, чтобы новые или обновленные данные, которые создают дублирующийся ключ в индексе (при помощи инструкции INSERT), были пропущены.

Индекс создается в базе данных при сохранении таблицы или схемы.

Примечание

Нельзя создать уникальный индекс для одного столбца, если в более чем одной строке этого столбца содержится значение NULL.Нельзя также создать уникальный индекс для нескольких столбцов, если в более чем одной строке такой комбинации столбцов содержится значение NULL.При индексировании такие значения будут рассматриваться как дубликаты.

Примечание

Индексы могут использоваться в базах данных по-разному.Дополнительные сведения об этом см. в документации по используемой базе данных.

См. также

Ссылки

Диалоговое окно "Индексы/Ключи"

Другие ресурсы

Работа с индексами

Работа с ключами