Какой тип индекса используется по умолчанию в PostgreSQL?

«Какой тип индекса используется по умолчанию в PostgreSQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PostgreSQL по умолчанию создаётся индекс типа B-tree (B-дерево), если в команде CREATE INDEX не указан другой метод доступа.

Почему B-tree? Это сбалансированное дерево, оптимальное для широкого спектра операций:

  • Проверка равенства (=)
  • Диапазонные запросы (>, <, BETWEEN)
  • Сортировка (ORDER BY)
  • Поиск по префиксу (LIKE 'abc%')
  • Поддержка уникальных ограничений и NULL значений.

Синтаксис:

-- Создаст B-tree индекс по умолчанию
CREATE INDEX idx_user_email ON users(email);

-- Явное указание типа B-tree (эквивалентно строке выше)
CREATE INDEX idx_user_email ON users USING btree (email);

Альтернативные типы индексов (требуют явного указания):

  • HASH — для операций строгого равенства.
  • GIN — для полнотекстового поиска и JSONB.
  • GiST/SP-GiST — для геоданных и сложных типов.
  • BRIN — для очень больших таблиц с коррелированными данными.