PostgreSQLは、その方が安価であると判断した場合にのみインデックスを使用します。booleanのインデックス テーブルの高い割合を取得する必要がある場合は、インデックスとテーブルでランダムI / Oを使用するよりもテーブル全体を順番に読み取る方が安価であるため、2つの可能な値しかとることができないcolumnはほとんど使用されません。 。
booleanのインデックス 列は有用です
-
データウェアハウスのシナリオでは、ビットマップインデックススキャンを介して他のインデックスと組み合わせることができます。 。
-
テーブルのごく一部のみが値
TRUEを持っている場合 (またはFALSEそのことについては)。この場合、部分インデックスを作成するのが最善です。 のようにCREATE INDEX ON mytab((1)) WHERE boolcolumn;