Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Какая сложность поиска в B-tree и Hash-индексе (асимптотическая и в среднем)?

Этот вопрос проверяет понимание временной сложности операций поиска в различных типах индексов баз данных.

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

Поиск в B-tree индексе имеет логарифмическую сложность O(log n), что эффективно для больших данных. Поиск в Hash индексе имеет постоянную сложность O(1) в среднем, но может деградировать до O(n) при коллизиях. B-tree лучше для диапазонных запросов, Hash — для точных совпадений.

Длинный ответ

Временная сложность операций поиска зависит от структуры индекса и условий запроса.

B-tree индекс:

  • Асимптотическая сложность: O(log n) — благодаря сбалансированной древовидной структуре.

  • Средняя сложность: O(log n) — высота дерева растет логарифмически от числа элементов.

  • Особенности: Поддерживает диапазонные запросы и сортировку. Устойчив к данным разного размера.

Hash индекс:

  • Асимптотическая сложность: O(1) в лучшем случае, но может деградировать до O(n) при большом количестве коллизий.

  • Средняя сложность: O(1) — при хорошей хеш-функции и равномерном распределении.

  • Особенности: Быстрый поиск по точному совпадению, но не поддерживает диапазонные запросы. Требует перестройки при изменении размера таблицы.

Сравнение:

  • B-tree предсказуем и надежен для различных нагрузок.

  • Hash может быть быстрее для point queries, но не подходит для сортировки или диапазонов.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

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

#b-tree

#hash index

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