Какие знаешь индексы в PostgreSQL

Python Middle Без компании
Какие знаешь индексы в PostgreSQL
Ответы
PostgreSQL поддерживает несколько типов индексов, каждый из которых оптимизирован под определённые сценарии: - **B-tree** — стандартный индекс для большинства операций (сравнение, сортировка, диапазоны). ``` CREATE INDEX idx_name ON users(name); ``` - **Hash** — быстрый поиск по точному совпадению (только `=`). ``` CREATE INDEX idx_email_hash ON users USING HASH(email); ``` - **GIN (Generalized Inverted Index)** — для сложных типов данных (JSON, массивы, полнотекстовый поиск). ``` CREATE INDEX idx_tags_gin ON posts USING GIN(tags); ``` - **GiST (Generalized Search Tree)** — для геоданных, полнотекстового поиска и других сложных структур. ``` CREATE INDEX idx_location_gist ON shops USING GiST(location); ``` - **SP-GiST (Space-Partitioned GiST)** — для нерегулярных структур (IP-адреса, геоданные). ``` CREATE INDEX idx_ip_spgist ON logs USING SPGiST(ip_address); ``` - **BRIN (Block Range INdex)** — для больших таблиц с естественной сортировкой (например, временные данные). ``` CREATE INDEX idx_created_brin ON orders USING BRIN(created_at); ``` Выбор индекса зависит от типа данных и запросов. Например, B-tree подходит для большинства случаев, а GIN — для работы с массивами или JSON.