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

Какой индекс добавить для запроса поиска свободных книг? Зачем каждое поле в составном индексе? Как отработает индекс при 2 млн строк?

Компании, где спрашивали
Холодильник.руХолодильник.ру

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

sobes.tech AI

Для запроса поиска свободных книг оптимально создать составной индекс, включающий поля, по которым происходит фильтрация и сортировка. Например, если у вас есть таблица books с полями status (свободна или занята), category и title, и запрос выглядит так:

SELECT * FROM books WHERE status = 'free' ORDER BY category, title;

то индекс может быть таким:

CREATE INDEX idx_books_status_category_title ON books (status, category, title);

Зачем каждое поле:

  • status — первое в индексе, так как по нему идет фильтрация (WHERE), чтобы быстро отобрать только свободные книги.
  • category — второе, чтобы ускорить сортировку и группировку по категории.
  • title — третье, для сортировки внутри категории.

При 2 млн строк такой индекс позволит быстро отфильтровать нужные записи, не сканируя всю таблицу, а затем эффективно отсортировать результаты. Индекс уменьшит количество операций чтения и ускорит выполнение запроса, особенно если свободных книг значительно меньше общего числа.