Вопрос проверяет знание внутренних структур Postgres и умение выбирать индексы под задачу.
B-Tree — универсальный индекс для диапазонов и сортировки.
Hash — быстрый поиск по равенству, но ограниченный.
BRIN — очень компактный индекс для больших таблиц с упорядоченными данными.
B-Tree (по умолчанию):
Подходит для <, >, BETWEEN, ORDER BY.
Самый универсальный.
Хорошо работает на маленьких и средних таблицах.
Hash:
Оптимален для = (равенство).
Не поддерживает диапазоны.
В PG ≥ 10 поддерживает WAL и надёжен.
BRIN (Block Range Index):
Сохраняет статистику по блокам (минимум/максимум).
Работает на очень больших таблицах (миллиарды строк).
Подходит для данных с естественным порядком (дата, автоинкремент id).