Индекс — это структура данных, улучшающая скорость операций поиска в базе данных. Он создает отсортированный список значений одного или нескольких столбцов таблицы, связанных с местоположением соответствующих строк. Это позволяет СУБД быстро находить нужные данные без полного сканирования таблицы.
Типы индексов:
- Первичный (Primary Key): Уникально идентифицирует каждую строку таблицы. Автоматически создается СУБД и гарантирует уникальность значений.
- Уникальный (Unique): Обеспечивает уникальность значений в одном или нескольких столбцах. Отличается от первичного тем, что может содержать NULL (в большинстве СУБД) и в таблице может быть несколько уникальных индексов.
- Обычный (Non-Unique): Ускоряет поиск, но не требует уникальности значений.
- Полнотекстовый (Full-Text): Используется для ускорения поиска по тексту в строковых столбцах.
Преимущества:
- Значительно ускоряет выполнение SELECT-запросов, особенно при поиске, сортировке и объединении таблиц (JOIN).
Недостатки:
- Занимает дополнительное дисковое пространство.
- Замедляет операции INSERT, UPDATE, DELETE, так как при изменении данных сам индекс также должен быть обновлен.
Принцип работы (упрощенно):
СУБД использует индекс как указатель. Вместо последовательного просмотра всех строк таблицы, она ищет нужное значение в индексе (который, как правило, имеет более эффективную структуру для поиска, например B-дерево) и по найденному указателю мгновенно переходит к нужной строке в таблице.
Пример создания индекса в SQL:
sql