Индекс в SQL — это объект базы данных, который ускоряет поиск строк в таблице. Индексы создаются на основе одного или нескольких столбцов и позволяют существенно повысить производительность запросов.
Виды индексов
Обычный (B-Tree) индекс
Используется по умолчанию в большинстве реляционных СУБД. Структура B-Tree позволяет эффективно выполнять поиск, вставку и удаление данных.
Пример создания индекса
CREATE INDEX idx_users_email ON users(email);Уникальный индекс
Гарантирует, что в указанном столбце не будет повторяющихся значений.
Пример создания уникального индекса
CREATE UNIQUE INDEX idx_users_username ON users(username);Индекс по нескольким столбцам (композитный индекс)
Используется для оптимизации запросов, фильтрующих данные сразу по нескольким столбцам.
Пример создания композитного индекса
CREATE INDEX idx_orders_customer_date ON orders(customer_id, order_date);Полнотекстовый индекс
Применяется для ускоренного поиска текстовых данных в столбцах с большим объемом текста.
Пример создания полнотекстового индекса
CREATE FULLTEXT INDEX idx_articles_content ON articles(content);Хеш-индекс
Применяется для поиска точного совпадения значений, но не поддерживает диапазонные запросы.
Пример создания хеш-индекса (PostgreSQL)
CREATE INDEX idx_users_id_hash ON users USING HASH (id);Когда использовать индексы
- Часто выполняются запросы с фильтрацией (
WHERE), сортировкой (ORDER BY) или объединением (JOIN). - Важно ускорить поиск данных.
Когда не использовать индексы
- Таблица небольшого размера (индексы могут замедлить вставку и обновление данных).
- Частые операции вставки, обновления и удаления (индексы требуют дополнительного времени на пересчет).