Меньше индексов, дешевле запись: как я научил PostgreSQL пересекать B-tree индексы с сохранением порядка
TL;DR. Я написал расширение для PostgreSQL 18, postgresql-leapfrog . Оно добавляет в планировщик новый узел, Index Merge Intersect: упорядоченное пересечение нескольких обычных B-tree индексов, которое останавливается на LIMIT . В результате таблице не нужен отдельный составной индекс под каждую комбинацию фильтров. На тестовой схеме с 12 фильтрами это 14 индексов вместо 33, вдвое меньше места под индексы и втрое меньше WAL на вставке. Проект экспериментальный (0.0.3), в конце статьи честно перечислено, чего он пока не умеет.
https://habr.com/ru/articles/1099544/
#postgresql #индексы #оптимизация_запросов #btree #wal #планировщик_запросов #расширения_postgresql #index_merge #custom_scan