-- bit check CREATE TABLE bittmp (a bit(33)); \copy bittmp from 'data/bit.data' SET enable_seqscan=on; SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100'; count ------- 249 (1 row) SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100'; count ------- 250 (1 row) SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100'; count ------- 1 (1 row) SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100'; count ------- 351 (1 row) SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100'; count ------- 350 (1 row) CREATE INDEX bitidx ON bittmp USING GIST ( a ); SET enable_seqscan=off; SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100'; count ------- 249 (1 row) SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100'; count ------- 250 (1 row) SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100'; count ------- 1 (1 row) SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100'; count ------- 351 (1 row) SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100'; count ------- 350 (1 row) -- Test index-only scans SET enable_bitmapscan=off; EXPLAIN (COSTS OFF) SELECT a FROM bittmp WHERE a BETWEEN '1000000' and '1000001'; QUERY PLAN --------------------------------------------------------------------- Index Only Scan using bitidx on bittmp Index Cond: ((a >= '1000000'::"bit") AND (a <= '1000001'::"bit")) (2 rows)