Улучшение производительности запросов с помощью индексов

Для этих независимых условий подойдут отдельные B-tree индексы на title и date_published. Эффект зависит от доли подходящих строк; диапазон, возвращающий почти всю таблицу, может не выиграть от индекса.

Короткий ответ

Что ответить на собеседовании

Для этих независимых условий подойдут отдельные B-tree индексы на title и date_published. Эффект зависит от доли подходящих строк; диапазон, возвращающий почти всю таблицу, может не выиграть от индекса.

Подробный разбор

Ответ с пояснениями

Условие

Проанализировать набор SQL‑запросов и подобрать оптимальные индексы для ускорения их выполнения.

SELECT * FROM books
WHERE title = 'War and Peace';

SELECT * FROM books
WHERE date_published >= '01-01-2024';

Ответ

Для этих независимых условий подойдут отдельные B-tree индексы на title и date_published. Эффект зависит от доли подходящих строк; диапазон, возвращающий почти всю таблицу, может не выиграть от индекса.

Пример DDL:

CREATE INDEX books_title_idx ON books (title);
CREATE INDEX books_date_published_idx ON books (date_published);

Дату лучше задавать однозначно, например в PostgreSQL: date_published >= DATE '2024-01-01'. Составной индекс (title, date_published) полезен для запросов с совместным условием, но не является универсальной заменой двух отдельных индексов здесь. Проверяйте план, объём результата и стоимость записи: лишние индексы занимают место и замедляют INSERT/UPDATE.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее