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


Индексы (визуальные инструменты для баз данных)

Обновлен: Ноябрь 2007

Индекс используется для быстрого доступа к определенному содержимому таблицы базы данных. Индекс представляет собой структуру, в которой упорядочены значения одного или нескольких столбцов таблицы базы данных, таких как столбец фамилии (lname) в таблице employee. Если искать какого-либо сотрудника по его фамилии, использование индекса позволит получить нужную информацию быстрее, чем при поиске с просмотром всех строк таблицы.

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

В схемах баз данных можно создавать, изменять и удалять индексы любого типа в диалоговых окнах Диалоговое окно "Индексы/Ключи", Диалоговое окно "XML-индексы" и Диалоговое окно "Полнотекстовый индекс" для выбранной таблицы. Индекс сохраняется в базе данных при сохранении таблицы, с которой он связан, или при сохранении схемы, в которую входит таблица. Дополнительные сведения см. в разделе Работа с индексами.

s2aewe8z.alert_note(ru-ru,VS.90).gifПримечание.

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

Как правило, индекс создается для таблицы только в том случае, если данные в индексированных столбцах будут часто запрашиваться. Индексы требуют дополнительного места на диске и могут замедлить добавление, удаление и обновление строк. В большинстве случаев преимущества индексов, связанные с ускорением извлечения данных, значительно перевешивают эти недостатки. Однако если данные обновляются в приложении очень часто, или если место на диске ограничено, имеет смысл уменьшить число индексов.

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

Столбцы индекса

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

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

Чтобы оценить степень целесообразности индекса:

  • Изучите предложения WHERE и JOIN, используемые в запросах. Каждый столбец, включенный в одно из этих предложений, является потенциальным кандидатом на включение в индекс.

  • Поэкспериментируйте с новым индексом и проанализируйте, как его использование отражается на скорости выполнения запросов.

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

  • Просмотрите определения индексов, уже созданных для таблицы. Старайтесь не создавать перекрывающиеся индексы, содержащие общие столбцы.

  • Проверьте число уникальных значений данных в столбце и сравните его с числом строк в таблице. Полученный результат называется селективностью столбца; он позволяет определить, является ли столбец кандидатом на включение в индекс, и если да, то в индекс какого типа.

Типы индекса

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

s2aewe8z.alert_note(ru-ru,VS.90).gifСовет.

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

Уникальный индекс

Уникальным является индекс, в котором не может быть двух строк с одним и тем же значением индекса.

В большинстве баз данных не допускается сохранение таблицы с созданным в ней уникальным индексом, если в существующих данных имеются повторяющиеся значения ключа. В базе данных может быть также запрещено добавление новых данных, приводящее к появлению дубликатов значений ключа в таблице. Например, если создать уникальный индекс по фамилии сотрудника (lname) в таблице employee, в ней не должно быть двух сотрудников с одинаковыми фамилиями.

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

Индекс первичного ключа

В таблице базы данных обычно имеется столбец или комбинация столбцов, значения которых однозначно идентифицируют каждую строку таблицы. Такой столбец называется первичным ключом таблицы.

Определение первичного ключа для таблицы в схеме базы данных автоматически приводит к созданию индекса первичного ключа, который является разновидностью уникального индекса. Этот индекс требует уникальности каждого значения первичного ключа. Он также обеспечивает быстрый доступ к данным при использовании индекса первичного ключа в запросах. Дополнительные сведения о первичных ключах см. в разделе Работа с ключами.

Кластерный индекс

В кластерном индексе физический порядок строк в таблице совпадает с логическим (индексированным) порядком значений ключа. У таблицы может быть только один кластерный индекс.

Если индекс не кластеризован, физический порядок строк таблицы отличается от логического порядка значений ключа. Кластерный индекс обычно обеспечивает более быстрый доступ к данным, чем прочие индексы.

Дополнительные сведения об использовании кластерного индекса см. в разделе Практическое руководство. Создание кластеризованных индексов.

Полнотекстовый индекс

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

s2aewe8z.alert_note(ru-ru,VS.90).gifПримечание.

Перед созданием полнотекстового индекса необходимо сначала создать каталог с помощью какого-либо внешнего средства, такого как SQL Server Management Studio или Enterprise Manager.

s2aewe8z.alert_note(ru-ru,VS.90).gifПримечание.

Функции полнотекстового индекса недоступны в экспресс-выпуске Microsoft SQL Server 2005.

XML-индекс

Используйте диалоговое окно XML-индексы для создания индексов для столбцов с типом данных XML, которые не могут быть индексированы в диалоговом окне Индексы и ключи. Каждый столбец типа XML может иметь более одного XML-индекса, но первый созданный (первичный) индекс будет являться основой для всех остальных. При удалении первичного XML-индекса удаляются и все остальные XML-индексы. Дополнительные сведения об XML-индексах см. в разделе Практическое руководство. Создание XML-индексов.

См. также

Ссылки

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

Диалоговое окно "Связи по внешним ключам"

Диалоговое окно "XML-индексы"

Диалоговое окно "Полнотекстовый индекс"

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

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

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