Индекс в 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
). - Важно ускорить поиск данных.
Когда не использовать индексы
- Таблица небольшого размера (индексы могут замедлить вставку и обновление данных).
- Частые операции вставки, обновления и удаления (индексы требуют дополнительного времени на пересчет).