Sobes.tech
Назад к вопросам
Middle
14

Какие типы индексов вы знаете в MS SQL Server? Расскажите о кластерных и некластерных индексах.

Компании, где спрашивали
Winline

Ответ от нейросети

sobes.tech AI

В MS SQL Server существуют несколько типов индексов, основные из них:

  • Кластерный индекс (Clustered Index)
  • Некластерный индекс (Non-Clustered Index)
  • Индексы полнотекстового поиска
  • XML-индексы
  • Пространственные индексы

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

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

Преимущества:

  • Быстрый доступ к данным при запросах с диапазоном значений по ключу.
  • Эффективен для операций сортировки и группировки.

Недостатки:

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

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

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

Преимущества:

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

Недостатки:

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

Пример создания кластерного и некластерного индексов:

-- Создание кластерного индекса
CREATE CLUSTERED INDEX IX_Orders_OrderDate ON Orders(OrderDate);

-- Создание некластерного индекса
CREATE NONCLUSTERED INDEX IX_Orders_CustomerID ON Orders(CustomerID);