Sobes.tech
Назад к вопросам
Middle+
6

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

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

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

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 без дополнительной сортировки.