Назад к вопросам
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);