Sobes.tech
Назад к вопросам
Senior
8

Построить оптимальный индекс для SELECT * FROM employee WHERE sex = 'm' AND salary > 300000 AND age = 20 ORDER BY created_at

Компании, где спрашивали
А7

Ответ от нейросети

sobes.tech AI

Для запроса:

SELECT * FROM employee WHERE sex = 'm' AND salary > 300000 AND age = 20 ORDER BY created_at

Оптимальный индекс должен учитывать:

  • Фильтрацию по sex и age — точное равенство.
  • Диапазон по salary — условие > 300000.
  • Сортировку по created_at.

Рекомендуется составной индекс с колонками в следующем порядке:

CREATE INDEX idx_employee_sex_age_salary_created_at ON employee (sex, age, salary, created_at);

Обоснование:

  • sex и age — фильтры с точным совпадением, ставим их первыми.
  • salary — диапазонный фильтр, идёт после точных.
  • created_at — для сортировки, включаем в индекс, чтобы избежать дополнительного сортирования.

Такой индекс позволит эффективно использовать фильтры и сортировку, минимизируя количество считываемых строк.