Mediumindex

Что такое индексы в БД?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Индекс — отдельная структура (обычно B-tree), позволяющая быстро находить строки без полного сканирования таблицы. Без индекса — O(n), с B-tree — O(log n).

-- Составной индекс: эффективен для префикса колонок
CREATE INDEX idx_users_name ON users(last_name, first_name);

-- Уникальный индекс
CREATE UNIQUE INDEX idx_users_email ON users(email);

Когда создавать: на FK, на часто фильтруемые в WHERE колонки, на JOIN-колонки. Когда не стоит: на маленьких таблицах, часто обновляемых колонках, низкой селективности (пол, флаг). Цена: медленнее INSERT/UPDATE/DELETE (индекс нужно перестраивать) и дополнительное место на диске. Проверить использование — EXPLAIN.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.