Встречается на собеседованиях • сегодня

По каким полям создавал бы индекс, при медленном запросе и выборкой по нескольким полям

При медленном запросе с выборкой по нескольким полям стоит создать составной индекс, включающий поля в порядке их использования в WHERE/JOIN/ORDER BY.

Критерии:

  1. Первым в индексе идёт поле с высокой селективностью (уникальные значения)
  2. Далее добавляются остальные поля из условий WHERE
  3. Если есть сортировка (ORDER BY) — включаем эти поля после условий

Пример:

sql
-- Запрос: 
SELECT * FROM orders 
WHERE user_id = 100 AND status = 'SHIPPED' 
ORDER BY created_at DESC;

-- Оптимальный индекс:
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at);

Нюансы:

  • Порядок полей критичен: индекс (A, B)(B, A)
  • Индексы неэффективны для LIKE '%text%' или IS NULL
  • Избыточные индексы замедляют INSERT/UPDATE
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы