Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Postgres: seq scan, index, b-tree, hash

Если в запросе Seq Scan по полю с датой, что это значит? Какой индекс накинуть на дату и почему? (B-tree vs Hash).

Этот вопрос проверяет умение анализировать план запроса и выбирать 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';

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

Ключевые слова

#seq scan

#index

#b-tree

#hash

Подпишись на Python Developer в телеграм