В чём разница между индексами BRIN и B-Tree в PostgreSQL? Для каких типов таблиц, например логов и временных рядов, BRIN даст значительную экономию дискового пространства и превзойдёт B-Tree по скорости создания?

B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.

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

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

B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.

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

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

B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.

Типичный случай — добавляемые по времени логи: диапазон страниц покрывает близкие timestamps. BRIN может быть намного меньше и быстрее строиться, но возвращает кандидатов для повторной проверки, а не точные совпадения каждой строки. Если значения перемешаны, фильтрация ухудшается. pages_per_range задаёт компромисс размера и точности; ускорение зависит от распределения и запросов, а не гарантируется самим названием индекса.

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

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

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

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

Подробнее