Составной индекс может быть невыгоден из-за порядка полей, низкой селективности, несовпадения выражений или устаревшей статистики. GIN подходит для поиска по составным значениям.
[имя] спрашивает, почему составной индекс может не использоваться или не ускорять запрос, и какие типы индексов знаете, когда применять GIN?
Составной индекс может быть невыгоден из-за порядка полей, низкой селективности, несовпадения выражений или устаревшей статистики. GIN подходит для поиска по составным значениям.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Составной индекс может быть невыгоден из-за порядка полей, низкой селективности, несовпадения выражений или устаревшей статистики. GIN подходит для поиска по составным значениям.
Начните с плана выполнения и реального распределения данных. B-tree полезен для равенства, диапазонов и сортировки; условия по ведущим колонкам обычно лучше ограничивают чтение составного индекса. Но отсутствие ведущей колонки не означает безусловный запрет его использования.
GIN индексирует элементы массивов, лексемы полнотекстового поиска и поддерживаемые операции над JSONB. Он ускоряет соответствующие операторы, но увеличивает стоимость записи. Также существуют Hash для равенства, GiST/SP-GiST для специализированных поисков и BRIN для больших физически упорядоченных данных. Выбор зависит от operator class и запросов.