Ответ
Индекс — это дополнительная структура данных, которая ускоряет операции поиска (SELECT с WHERE), сортировки (ORDER BY) и соединения (JOIN) в таблицах базы данных. Его можно сравнить с алфавитным указателем в книге, который позволяет быстро найти нужную страницу, не перелистывая все подряд.
Как работает? Индекс создается на одном или нескольких столбцах таблицы. При запросе СУБД сначала ищет нужное значение в индексе (что обычно гораздо быстрее полного сканирования таблицы), а затем по ссылке из индекса находит соответствующую строку в таблице.
Основные типы индексов:
- B-дерево (B-tree): Наиболее распространенный. Поддерживает быстрый поиск по равенству и диапазону (
=,>,<,BETWEEN). - Хеш-индекс: Очень быстрый поиск строго по равенству (
=), но не поддерживает диапазоны или сортировку. - Составной индекс: Создается на нескольких столбцах. Порядок столбцов важен.
Пример создания и использования:
-- Создание индекса на столбце email таблицы users
CREATE INDEX idx_users_email ON users(email);
-- Этот запрос будет использовать индекс для быстрого поиска
SELECT * FROM users WHERE email = 'alice@example.com';
| Плюсы и минусы: | Преимущества | Недостатки |
|---|---|---|
✅ Резкое ускорение операций чтения (SELECT). |
❌ Замедление операций записи (INSERT, UPDATE, DELETE), так как индексы也需要 обновлять. |
|
✅ Ускорение операций JOIN и ORDER BY. |
❌ Дополнительное потребление дискового пространства. |
Рекомендация: Индексы следует создавать на столбцах, которые часто используются в условиях WHERE, JOIN и ORDER BY. Необходимо находить баланс, так как избыточное индексирование вредит производительности записи.