Какими типами индексов ты пользовался в PostgreSQL? Почему для полнотекстового поиска используется GIN-индекс, а не B-tree?

В PostgreSQL B-tree подходит для равенства, диапазонов и сортировки, а GIN — для поиска элементов составного значения, в том числе лексем tsvector. Для полнотекстового поиска обычно выбирают GIN.

Короткий ответ

Что ответить на собеседовании

В PostgreSQL B-tree подходит для равенства, диапазонов и сортировки, а GIN — для поиска элементов составного значения, в том числе лексем tsvector. Для полнотекстового поиска обычно выбирают GIN.

Подробный разбор

Ответ с пояснениями

В PostgreSQL B-tree подходит для равенства, диапазонов и сортировки, а GIN — для поиска элементов составного значения, в том числе лексем tsvector. Для полнотекстового поиска обычно выбирают GIN.

GIN хранит соответствие лексем документам, поэтому позволяет находить строки по отдельным словам запроса. B-tree упорядочивает значение целиком и не обеспечивает такой поиск по содержимому tsvector.

Другие семейства индексов: Hash для равенства, GiST/SP-GiST для специализированных типов и структур, BRIN для крупных физически коррелированных данных. Выбор проверяют через EXPLAIN и реальную нагрузку: каждый индекс требует места и удорожает записи. На вопрос о личном опыте перечисляйте только действительно использованные типы.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее