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 подскажет развёрнутый ответ в реальном времени.