Что быстрее работает по точному совпадению — B-tree или Hash индекс в PostgreSQL?

Однозначного победителя нет: Hash рассчитан на равенство, но B-tree часто столь же практичен и поддерживает больше операций. Быстрее определяется измерением на конкретных данных и запросе.

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

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

Однозначного победителя нет: Hash рассчитан на равенство, но B-tree часто столь же практичен и поддерживает больше операций. Быстрее определяется измерением на конкретных данных и запросе.

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

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

Однозначного победителя нет: Hash рассчитан на равенство, но B-tree часто столь же практичен и поддерживает больше операций. Быстрее определяется измерением на конкретных данных и запросе.

Hash хранит хеши значений и требует проверки возможных совпадений; большие бакеты и распределение данных влияют на стоимость. B-tree поддерживает диапазоны, сортировку и другие сценарии, поэтому один индекс может обслуживать больше запросов. Теоретические O(1) и O(log n) не учитывают кеш, I/O, коллизии и цену чтения строки. Сравнивайте планы, buffers и latency характерной нагрузки, а также обслуживание индекса. Не выбирайте Hash только потому, что условие записано через равно.

Источник: www.postgresql.org.

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

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

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

Подробнее