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