Встречается на 2% собеседований по Python
Как индекс GIN работает с полнотекстовым поиском в БД
GIN (Generalized Inverted Index) — это тип индекса в PostgreSQL, оптимизированный для сложных структур данных, включая полнотекстовый поиск.
Как работает:
- Текст разбивается на лексемы (токены) с помощью анализатора (например,
to_tsvector). - Для каждой лексемы индекс хранит список строк (или документов), где она встречается.
- Поиск (
@@,tsquery) использует этот индекс для быстрого нахождения совпадений.
Пример:
sql
-- Создание индекса GIN для полнотекстового поиска
CREATE INDEX idx_gin_content ON articles USING GIN(to_tsvector('english', content));
-- Поиск с использованием индекса
SELECT title FROM articles
WHERE to_tsvector('english', content) @@ to_tsquery('english', 'python & database');Плюсы:
- Эффективен для сложных запросов (
AND,OR,NOT). - Поддерживает ранжирование (
ts_rank).
Минусы:
- Занимает больше места, чем B-tree.
- Медленнее обновляется при вставках/изменениях.
Оптимален для часто изменяемых данных с интенсивным поиском.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы