Индексы в базах данных: краткий обзор
Индексы в реляционных базах данных – это дополнительная структура данных для ускорения поиска и обработки записей. Это подобно алфавитному указателю в англо-русском словарике: не нужно листать весь словарь, достаточно лишь открыть страницы с нужным сочетанием букв.
Принцип работы
- Индексы создаются на одном или нескольких столбцах таблицы.
- Каждый индекс связан с определенной таблицей, но хранится отдельно. Нужны дополнительные затраты на хранение, память и актуализацию индексов.
- Индексирование базы данных выполняется при помощи алгоритма, определяющего, как должен создаваться и храниться индекс.
Виды индексов
Кластерный
- Определяет порядок физического хранения данных на диске, упорядочивая строки таблицы по значениям индекса.
- Строки фактически упорядочиваются на диске в соответствии со значениями кластерного индекса.
- Может быть создан только для одного столбца.
Некластерный
- Создает отдельную структуру данных, которая содержит ссылки на строки основной таблицы, упорядоченные по значениям индексируемого столбца.
- Может быть создан для нескольких столбцов.
Эффективность индексов
Преимущества
- Существенно ускоряют запросы к таблицам с большим объемом данных, особенно при использовании WHERE.
- Облегчают сортировку данных, полезно при запросах ORDER BY.
- Могут гарантировать уникальность значений в столбцах (используя уникальные индексы по нескольким столбцам).
- Оптимизируют JOIN-операции.
Недостатки
- Для небольших таблиц индексация может оказаться избыточной.
- Для операций записи и изменения данных, так как нужно изменять все связанные индексы.
- Когда используются все или большинство данных. Например, если нужно извлечь все строки.