1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
-- 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)
|