Sobes.tech
Middle
18

Расскажи про индексы в PostgreSQL: какие бывают, когда использовать, когда не стоит?

Companies where asked
СБЕРСБЕР

Answer from AI

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.