Назад к вопросам
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);