Sobes.tech
Senior
22

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

Companies where asked
А7

Answer from AI

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 — для сортировки, включаем в индекс, чтобы избежать дополнительного сортирования.

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