O PostgreSQL usará um índice somente se achar que será mais barato dessa forma. Um índice em um
boolean
coluna, que só pode ter dois valores possíveis, quase nunca será usada, porque é mais barato ler sequencialmente toda a tabela do que usar E/S aleatória no índice e na tabela se uma alta porcentagem da tabela tiver que ser recuperada . Um índice em um
boolean
coluna só é útil -
em cenários de data warehouse, onde pode ser combinado com outros índices por meio de uma varredura de índice de bitmap .
-
se apenas uma pequena fração da tabela tiver o valorTRUE
(ouFALSE
para o efeito). Neste caso é melhor criar um índice parcial Como
CREATE INDEX ON mytab((1)) WHERE boolcolumn;