PostgreSQL verwendet einen Index nur, wenn es glaubt, dass es auf diese Weise billiger ist. Ein Index auf einem boolean
-Spalte, die nur zwei mögliche Werte annehmen kann, wird fast nie verwendet, da es billiger ist, die gesamte Tabelle sequentiell zu lesen, als zufällige E/A auf den Index und die Tabelle zu verwenden, wenn ein hoher Prozentsatz der Tabelle abgerufen werden muss .
Ein Index auf einem boolean
Spalte ist nur nützlich
-
in Data-Warehouse-Szenarien, wo es über einen Bitmap-Index-Scan mit anderen Indizes kombiniert werden kann .
-
wenn nur ein kleiner Teil der Tabelle den Wert
TRUE
hat (oderFALSE
übrigens). In diesem Fall erstellen Sie am besten einen Teilindex wieCREATE INDEX ON mytab((1)) WHERE boolcolumn;