BRIN-Index
Block Range INdex — ein minimalistischer Indextyp in PostgreSQL für große, physisch sortierte Tabellen. Speichert Min/Max pro N Seiten. Seit Version 9.5 (2016). Größenordnungen kleiner als ein B-Tree, setzt aber sequentielle Daten voraus.
Perfekt für Zeitreihen- und Log-Tabellen, in die Zeilen chronologisch eingefügt werden. Ein Scan kann ganze Blockbereiche überspringen, wenn Min/Max nicht passt. Der Haken: Ein BRIN-Index auf ungeordneten Daten ist wertlos — jeder Bereich trifft dann auf alles zu. Auto-Summarize läuft bei VACUUM mit. Der Performance-Gewinn ist real: Eine 1-TB-Log-Tabelle kommt mit einem 1-MB-BRIN-Index statt 30 GB B-Tree aus. Unterschied zu GiST: BRIN ändert nichts an der Art der Suche, es filtert nur Abschnitte vorab heraus.