Вопрос на собеседовании · Backend-разработчик

Как работает индекс в базе данных и когда он не помогает?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 10 августа 2026 г.Встречается почти всегда
Короткий ответ

Индекс — отдельная структура данных, которая ускоряет поиск строк ценой дополнительного места и более дорогих операций записи. Распространённый B-tree хранит упорядоченные ключи и ссылки на строки, поэтому подходит для равенства, диапазонов и сортировки.

Оптимизатор выбирает индекс только когда ожидает, что это дешевле полного чтения таблицы. Поэтому наличие индекса не гарантирует его использование: важны селективность, статистика, форма условия и порядок колонок в составном индексе.

01 · Структура ответа

Что важно сказать интервьюеру

Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:

Индекс ускоряет чтение, но замедляет INSERT, UPDATE и DELETE.
У составного B-tree важен порядок колонок и правило левого префикса.
Функция над индексируемой колонкой может помешать обычному индексу.
Решение проверяют через EXPLAIN или EXPLAIN ANALYZE, а не по догадке.

02 · Пример

Как объяснить на практике

Для запросов по tenant_id и created_at индекс (tenant_id, created_at) позволяет сначала сузить данные до арендатора, затем быстро прочитать нужный диапазон дат. Обратный порядок подходит другому профилю запросов.

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Добавлять индекс на каждую колонку без учёта стоимости записи.
Считать, что низкоселективный индекс всегда быстрее последовательного чтения.
Утверждать, что составной индекс одинаково полезен для любого набора его колонок.

04 · Углубление

Что могут спросить следом

  1. Чем B-tree отличается от hash-индекса?
  2. Что такое покрывающий индекс?
  3. Почему запрос не использует созданный индекс?

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с опорой.

Потренировать ответ