Ответ
В 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— для очень больших таблиц с коррелированными данными.