Вопрос проверяет знание механизмов индексирования и умение выбирать подходящий тип индекса под задачу.
PostgreSQL поддерживает несколько типов индексов, каждый из которых оптимизирован под разные запросы. Самый распространенный — B-tree. Также существуют Hash, GIN, GiST, SP-GiST и BRIN. Выбор типа индекса зависит от структуры данных и характера запросов. Неправильный выбор индекса может ухудшить производительность.
Индекс — это вспомогательная структура данных, ускоряющая поиск строк в таблице.
B-tree
Используется для:
поиска по равенству
диапазонных запросов
сортировки и ORDER BY
Hash
Подходит для:
поиска только по равенству
Не поддерживает диапазоны.
GIN
Используется для:
массивов
JSONB
полнотекстового поиска
GiST
Применяется для:
геоданных
диапазонов
нестандартных типов
SP-GiST
Подходит для:
разреженных структур
иерархических данных
BRIN
Эффективен для:
очень больших таблиц
данных с естественной упорядоченностью
На практике:
чаще всего используют B-tree
специализированные индексы применяют под конкретные задачи
PostgreSQL предоставляет широкий набор типов индексов, что позволяет эффективно оптимизировать запросы под разные модели данных.