Sobes.tech
Назад к вопросам
Senior
6

Какие виды индексов в PostgreSQL знаешь? Расскажи про B-tree индекс, как устроен. Что такое GIN индекс?

Компании, где спрашивали
Сбер Право

Ответ от нейросети

sobes.tech AI

В PostgreSQL существуют разные типы индексов, наиболее распространённые:

  • B-tree — индекс по умолчанию, подходит для большинства операций сравнения (=, <, >, BETWEEN, LIKE с префиксом).
  • GIN (Generalized Inverted Index) — индекс для быстрого поиска по элементам внутри сложных типов данных, например, массивов, JSONB, полнотекстового поиска.
  • GiST — обобщённый индекс, поддерживает различные структуры, например, для геоданных.
  • Hash — для равенства, но используется редко из-за ограничений.

B-tree индекс

Это сбалансированное дерево, где данные хранятся в отсортированном виде. Поиск, вставка и удаление работают за логарифмическое время. Индекс хранит ключи и ссылки на строки таблицы. При поиске по индексу PostgreSQL быстро находит нужный диапазон значений.

GIN индекс

Предназначен для индексации коллекций значений, например, массивов или документов JSONB. Вместо хранения ключей и ссылок на строки, он хранит обратный индекс — для каждого значения список строк, где оно встречается. Это ускоряет поиск по элементам внутри сложных структур.

Пример создания GIN индекса для JSONB:

CREATE INDEX idx_jsonb_gin ON table_name USING gin (jsonb_column);