Index BRIN
Block Range INdex — un type d'index minimaliste de PostgreSQL pour les grandes tables triées physiquement. Il stocke le min/max de chaque groupe de N pages. Disponible depuis la 9.5 (2016). Des ordres de grandeur plus petit qu'un B-tree, mais à condition que les données soient séquentielles.
Parfait pour les séries temporelles et les tables de logs où les lignes s'insèrent dans l'ordre chronologique : un parcours peut sauter tous les blocs dont le min/max ne correspond pas. Contrepartie : un BRIN sur des données en désordre est inutile, chaque plage correspondant à tout. Le résumé automatique se fait au VACUUM. Gain concret : une table de logs de 1 To peut se contenter d'un index BRIN de 1 Mo, contre 30 Go pour un B-tree. Différence avec GiST : BRIN ne change pas la façon de chercher, il écarte simplement des pans entiers de la table.