Что такое индекс в базе данных? Какие виды индексов бывают (кластеризованные и некластеризованные)? Чем они отличаются? Сколько кластеризованных и некластеризованных индексов может быть на таблице?
Answer from AI
sobes.tech AI
Индекс в базе данных — это структура данных, которая ускоряет поиск и сортировку записей в таблице, позволяя быстро находить нужные строки без полного сканирования таблицы.
Виды индексов:
-
Кластеризованный индекс (Clustered Index): определяет физический порядок хранения данных в таблице. Обычно таблица может иметь только один кластеризованный индекс, так как данные могут быть упорядочены только одним способом. При запросах с использованием кластеризованного индекса данные извлекаются быстрее, так как они физически расположены в нужном порядке.
-
Некластеризованный индекс (Non-Clustered Index): отдельная структура, которая содержит ключи индекса и указатели на физические строки данных. Таблица может иметь несколько некластеризованных индексов. Они не меняют физический порядок данных, а служат для быстрого поиска.
Отличия:
| Характеристика | Кластеризованный индекс | Некластеризованный индекс |
|---|---|---|
| Физический порядок | Определяет физический порядок | Не влияет на физический порядок |
| Количество на таблицу | Обычно 1 | Много (зависит от СУБД) |
| Структура | Данные таблицы организованы как индекс | Отдельная структура с указателями |
Количество индексов:
- Кластеризованный индекс: 1 на таблицу
- Некластеризованные индексы: зависит от СУБД, обычно от нескольких до десятков
Пример создания индексов в SQL Server:
-- Создание кластеризованного индекса
CREATE CLUSTERED INDEX idx_clustered ON TableName(ColumnName);
-- Создание некластеризованного индекса
CREATE NONCLUSTERED INDEX idx_nonclustered ON TableName(OtherColumn);