No, puoi indicizzare un campo booleano se lo filtri in base ad esso. Questa è una cosa perfettamente ragionevole da fare, anche se, come con tutti gli indici, PostgreSQL potrebbe scegliere di ignorarlo se non esclude abbastanza della tabella:una scansione dell'indice più una tonnellata di recuperi di righe può essere più costosa di una scansione sequenziale - - che possono influire o meno su di te a seconda dei valori in quella colonna.
Dovresti anche essere consapevole del fatto che PostgreSQL ti consente di inserire condizioni sugli indici, che spesso trovo utili con i campi booleani. (Vedi Indici parziali
per i dettagli.) Se utilizzerai comunemente filtri o ordini all'interno di tale ambito, potresti essere meglio servito da qualcosa come CREATE INDEX ... ON table (some_field) WHERE boolean_field
.