🔹 Какие типы индексов в PostgreSQL и когда их применять? 🔸 Индекс решает проблему медленных full table scan: он ускоряет поиск, но увеличивает запись и занимает место. Выбираем тип по характеру запросов и по операторам, которые используем. 🔸 B-tree — дефолтный индекс. Отлично для равенств, диапазонов, ORDER BY и UNIQUE. Используйте для PK, FK и числовых/строковых колонок с сортировкой. 🔸 Hash — индекс только для равенств. Подходит, когда много точечных = запросов и B-tree не даёт нужной производительности; обычно реже применяется из‑за ограниченной поддержки операторов. 🔸 GiST (Generalized Search Tree) — нужен для пространственных данных (PostGIS), KNN/nearest, и для структур, где нужна похожесть (trigrams). Используйте, когда запросы — поиски по пространству или близости. 🔸 GIN (Generalized Inverted Index) — для колонок с множеством ключей на строку: массивы, full‑text, jsonb containment. Быстрее на чтение при множестве значений, но тяжёлее на запись. CREATE INDEX idx_user