Ответ
Индекс ускоряет поиск, создавая отдельную, оптимизированную для поиска структуру данных (например, B-дерево), которая хранит отсортированные значения поля и указатели на соответствующие строки в таблице. Это позволяет СУБД находить данные, не выполняя полное сканирование таблицы (full table scan).
Принцип работы:
- При создании индекса СУБД строит упорядоченную структуру по значениям указанного поля.
- При выполнении запроса с условием
WHEREпо этому полю оптимизатор использует индекс для быстрого поиска нужных значений с логарифмической сложностью O(log n).
Пример SQL:
-- Создание индекса
CREATE INDEX idx_users_email ON users(email);
-- Поиск, который будет использовать индекс
SELECT * FROM users WHERE email = 'user@example.com';
Преимущества:
- Высокая скорость поиска: O(log n) вместо O(n) при полном сканировании.
- Поддержка уникальности: Ограничение
UNIQUEреализуется через индекс. - Ускорение сортировки и соединений: Индекс может предоставлять уже отсортированные данные.
Недостатки (накладные расходы):
- Дополнительное дисковое пространство: Индекс — это отдельная структура данных.
- Замедление операций записи: При
INSERT,UPDATE,DELETEСУБД необходимо обновлять и сам индекс, что добавляет работу.