Back to questions
OZON
Middle+
5
Построить оптимальный индекс для SELECT * FROM employee WHERE sex = 'm' AND salary > 300000 AND age = 20 ORDER BY created_at
Companies where asked
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, created_at).
Пояснения:
sex = 'm'иage = 20— точные совпадения, их стоит поставить в начало индекса.salary > 300000— диапазонное условие, идёт после точных.ORDER BY created_at— чтобы избежать дополнительной сортировки, добавляемcreated_atв индекс.
Пример создания индекса в PostgreSQL:
CREATE INDEX idx_employee_sex_age_salary_created_at ON employee (sex, age, salary, created_at);
Такой индекс позволит эффективно фильтровать по sex и age, затем по диапазону salary, и сразу выдавать результаты отсортированными по created_at без дополнительной сортировки.