Middle
19
Расскажи про индексы в PostgreSQL: какие бывают, когда использовать, когда не стоит?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В PostgreSQL есть несколько типов индексов, основные из них:
- B-tree — самый распространённый тип, подходит для большинства операций сравнения (=, <, >, BETWEEN).
- Hash — эффективен для операций равенства, но менее универсален.
- GIN (Generalized Inverted Index) — используется для полнотекстового поиска и индексации массивов.
- GiST (Generalized Search Tree) — для сложных структур данных, например, геопространственных.
- BRIN (Block Range Index) — для очень больших таблиц с упорядоченными данными, экономит место.
Когда использовать индексы:
- Для ускорения поиска по часто используемым в WHERE или JOIN колонкам.
- Для обеспечения уникальности (UNIQUE индекс).
Когда не стоит:
- Если таблица очень маленькая — индекс может замедлить операции вставки.
- Если колонка часто обновляется — индексы увеличивают нагрузку на запись.
- Для колонок с очень низкой селективностью (например, булевы значения).
Пример создания B-tree индекса:
CREATE INDEX idx_users_email ON users(email);
Индекс поможет ускорить поиск пользователей по email.