PostgreSQL kommer bara att använda ett index om det tror att det blir billigare på det sättet. Ett index på en boolean
kolumn, som bara kan ta två möjliga värden, kommer nästan aldrig att användas, eftersom det är billigare att sekventiellt läsa hela tabellen än att använda slumpmässig I/O på indexet och tabellen om en hög andel av tabellen måste hämtas .
Ett index på en boolean
kolumnen är bara användbar
-
i datalagerscenarier, där det kan kombineras med andra index via en bitmappsindexskanning .
-
om bara en liten del av tabellen har värdet
TRUE
(ellerFALSE
för den sakens skull). I det här fallet är det bäst att skapa ett partiellt index gillarCREATE INDEX ON mytab((1)) WHERE boolcolumn;