Что такое индекс в SQL

Индекс в 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).
  • Важно ускорить поиск данных.

Когда не использовать индексы

  • Таблица небольшого размера (индексы могут замедлить вставку и обновление данных).
  • Частые операции вставки, обновления и удаления (индексы требуют дополнительного времени на пересчет).