Какие знаешь индексы в PostgreSQL
Python
Middle
Aston
Какие знаешь индексы в 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.