Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Postgres: btree, index, hash

В чём разница между B-Tree и Hash-индексом и почему Hash-индексы не поддерживают операции больше/меньше?

Вопрос проверяет понимание устройства индексов и причин, по которым разные типы индексов подходят для разных запросов.

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

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

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

Индексы оптимизируют поиск, но делают это разными способами.

Определение

B-Tree индекс — индекс, который хранит ключи в отсортированной структуре дерева.
Hash-индекс — индекс, который сопоставляет ключ значению хэш-функции.

B-Tree индекс

B-Tree — универсальный тип индекса.

Особенности:

  1. Ключи упорядочены

  2. Поддерживаются операции:

    • =

    • <, >

    • BETWEEN

    • ORDER BY

  3. Хорошо работает для диапазонов

Hash-индекс

Hash-индекс ориентирован на быстрый поиск по равенству.

Особенности:

  1. Использует хэш-функцию

  2. Нет упорядоченности ключей

  3. Поддерживает только =

Почему нельзя делать < и >

Операции больше и меньше требуют:

  1. Сравнения значений

  2. Перехода к соседним ключам

  3. Упорядоченного хранения

Hash-индекс:

  • знает только хэш

  • не знает, какое значение «больше» или «меньше»

Практический выбор

  1. Диапазоны и сортировки → B-Tree

  2. Частые проверки равенства → Hash (редко)

  3. Универсальный выбор → B-Tree

Вывод

B-Tree — универсальный индекс для большинства запросов. Hash-индексы ограничены поиском по равенству, поэтому используются редко.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

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

#btree

#index

#hash

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