В чем разница между B-Tree и остальными индексами

«В чем разница между B-Tree и остальными индексами» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

B-Tree (Balanced Tree) — сбалансированное дерево, поддерживающее сортировку данных. Основные отличия от других индексов:

  1. Сортировка — B-Tree хранит данные в отсортированном виде, что ускоряет поиск по диапазону (BETWEEN, >).
  2. Балансировка — автоматически поддерживает высоту дерева, гарантируя O(log n) для операций.
  3. Поддержка операторов — эффективен для =, >, <, LIKE 'prefix%'.

Примеры других индексов:

  • Hash — только точные совпадения (=), не поддерживает сортировку.
  • Bitmap — для низкокардинальных данных (например, gender).
  • GIN/GiST — для сложных типов (JSON, массивы).
// Пример: B-Tree в PostgreSQL
CREATE INDEX idx_name ON users USING BTREE (name);