Bitmapa stránek se vytváří dynamicky pro každý dotaz. Neukládá se do mezipaměti ani se znovu nepoužívá a na konci skenování indexu bitmapy se zahodí.
Nemá smysl vytvářet bitmapu stránky předem, protože její obsah závisí na predikátech dotazu .
Řekněme, že hledáte x=1 and y=2
. Na x
máte indexy b-stromu a y
. PostgreSQL nekombinuje x
a y
do bitmapy a poté bitmapu prohledejte. Skenuje index x
pro adresy všech stránek s x=1
a vytvoří bitmapu se stránkami, které mohou obsahovat x=1
jsou pravdivé. Poté naskenuje y
hledá adresy stránek, kde je y
se může rovnat 2
, z toho vytvoří bitmapu. Pak je spojí AND, aby našli stránky, kde jsou obě x=1
a y=2
může být pravda. Nakonec tabulku prohledá sama, přečte pouze stránky, které mohou obsahovat kandidátské hodnoty, přečte každou stránku a ponechá pouze řádky, kde x=1 and y=2
.
Nyní, pokud hledáte něco jako předpřipravený index bitmap v mezipaměti, v PostgreSQL 9.5 existuje taková věc:indexy BRIN . Ty jsou určeny pro velmi velké tabulky a poskytují způsob, jak najít rozsahy tabulky, které lze přeskočit, protože je známo, že neobsahují požadovanou hodnotu.