Ответ
В PostgreSQL по умолчанию используется индекс типа B-дерево (B-tree).
Он создается автоматически в следующих случаях:
- При объявлении первичного ключа (
PRIMARY KEY
). - При добавлении ограничения уникальности (
UNIQUE
). - При выполнении команды
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), которые нужно указывать явно.