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

Ответ

В PostgreSQL по умолчанию используется индекс типа B-дерево (B-tree).

Он создается автоматически в следующих случаях:

  1. При объявлении первичного ключа (PRIMARY KEY).
  2. При добавлении ограничения уникальности (UNIQUE).
  3. При выполнении команды CREATE INDEX без явного указания типа индекса.

Пример

CREATE TABLE employees (
    id SERIAL PRIMARY KEY, -- автоматически создаст B-tree индекс "employees_pkey"
    email VARCHAR(255) UNIQUE, -- автоматически создаст B-tree индекс "employees_email_key"
    department_id INT
);

-- Явное создание B-tree индекса (указывать USING btree не обязательно)
CREATE INDEX idx_department_id ON employees(department_id);

Почему B-tree?

B-дерево является наиболее универсальным и сбалансированным типом индекса. Он эффективно обрабатывает большинство операций сравнения: =, >, <, >=, <=, BETWEEN, а также LIKE для поиска по префиксу (например, 'text%').

Для более специфических задач, таких как полнотекстовый поиск или работа с геометрическими данными, используются другие типы индексов (GIN, GiST, Hash), которые нужно указывать явно.