Sobes.tech
Back to questions
Senior
6

Что такое индекс в базе данных? Какие виды индексов бывают (кластеризованные и некластеризованные)? Чем они отличаются? Сколько кластеризованных и некластеризованных индексов может быть на таблице?

Companies where asked
техвил

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);