Sobes.tech
Senior

Kas yra indeksas duomenų bazėje? Kokie yra indeksų tipai (klasterinis ir neklausterinis)? Kuo jie skiriasi? Kiek klasterinių ir neklausterinių indeksų gali būti lentelėje?

sobes.tech AI

Atsakymas iš 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);