Этот вопрос проверяет умение анализировать план запроса и выбирать appropriate index для поля с датой.
Seq Scan (sequential scan) means что база данных читает всю таблицу для выполнения запроса, что медленно для больших таблиц. Для поля с датой следует создать B-tree индекс, потому что B-tree поддерживает range queries (например, поиск по периоду), while Hash индекс only supports equality checks.
Seq Scan указывает на отсутствие подходящего индекса для запроса.
Почему Seq Scan плохо:
База данных должна просканировать всю таблицу, что resource-intensive для больших таблиц.
Запросы выполняются медленно.
Выбор индекса для даты:
B-tree индекс: Поддерживает range queries (>, <, BETWEEN) и sorting. Идеален для дат, потому что часто нужны запросы по периодам.
Hash индекс: Поддерживает только equality checks (=). Не подходит для дат, потому что range queries не supported.
Пример создания индекса:
CREATE INDEX idx_users_created_at ON users(created_at);Этот B-tree индекс ускорит запросы like:
SELECT * FROM users WHERE created_at BETWEEN '2023-01-01' AND '2023-12-31';