O bitmap de páginas é criado dinamicamente para cada consulta. Ele não é armazenado em cache ou reutilizado e é descartado no final da varredura de índice de bitmap.
Não faz sentido criar o bitmap da página antecipadamente porque seu conteúdo depende dos predicados da consulta .
Digamos que você esteja procurando por
x=1 and y=2
. Você tem índices b-tree em x
e y
. PostgreSQL não combina x
e y
em um bitmap, em seguida, pesquise o bitmap. Ele verifica o índice x
para o endereço de todas as páginas com x=1
e cria um bitmap onde as páginas que podem conter x=1
são verdadeiros. Em seguida, ele verifica y
procurando os endereços das páginas onde y
pode ser igual a 2
, fazendo um bitmap a partir disso. Em seguida, ele os faz AND para encontrar páginas em que x=1
e y=2
pode ser verdade. Finalmente, ele varre a tabela por conta própria, lendo apenas as páginas que podem conter valores candidatos, lendo cada página e mantendo apenas as linhas onde x=1 and y=2
. Agora, se você está procurando por algo como um índice de bitmap pré-construído em cache, existe algo assim no PostgreSQL 9.5:Índices BRIN . Eles são destinados a tabelas muito grandes e fornecem uma maneira de localizar intervalos da tabela que podem ser ignorados porque são conhecidos por não conter um valor desejado.