B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.
В чём разница между индексами BRIN и B-Tree в PostgreSQL? Для каких типов таблиц, например логов и временных рядов, BRIN даст значительную экономию дискового пространства и превзойдёт B-Tree по скорости создания?
B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.
Типичный случай — добавляемые по времени логи: диапазон страниц покрывает близкие timestamps. BRIN может быть намного меньше и быстрее строиться, но возвращает кандидатов для повторной проверки, а не точные совпадения каждой строки. Если значения перемешаны, фильтрация ухудшается. pages_per_range задаёт компромисс размера и точности; ускорение зависит от распределения и запросов, а не гарантируется самим названием индекса.
Источник: www.postgresql.org.