-- money check CREATE TABLE moneytmp (a money); \copy moneytmp from 'data/cash.data' SET enable_seqscan=on; SELECT count(*) FROM moneytmp WHERE a < '22649.64'; count ------- 289 (1 row) SELECT count(*) FROM moneytmp WHERE a <= '22649.64'; count ------- 290 (1 row) SELECT count(*) FROM moneytmp WHERE a = '22649.64'; count ------- 1 (1 row) SELECT count(*) FROM moneytmp WHERE a >= '22649.64'; count ------- 254 (1 row) SELECT count(*) FROM moneytmp WHERE a > '22649.64'; count ------- 253 (1 row) SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3; a | ?column? ------------+---------- $21,472.79 | $0.00 $21,469.25 | $3.54 $21,915.01 | $442.22 (3 rows) CREATE INDEX moneyidx ON moneytmp USING gist ( a ); SET enable_seqscan=off; SELECT count(*) FROM moneytmp WHERE a < '22649.64'::money; count ------- 289 (1 row) SELECT count(*) FROM moneytmp WHERE a <= '22649.64'::money; count ------- 290 (1 row) SELECT count(*) FROM moneytmp WHERE a = '22649.64'::money; count ------- 1 (1 row) SELECT count(*) FROM moneytmp WHERE a >= '22649.64'::money; count ------- 254 (1 row) SELECT count(*) FROM moneytmp WHERE a > '22649.64'::money; count ------- 253 (1 row) EXPLAIN (COSTS OFF) SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3; QUERY PLAN -------------------------------------------------- Limit -> Index Only Scan using moneyidx on moneytmp Order By: (a <-> '$21,472.79'::money) (3 rows) SELECT a, a <-> '21472.79' FROM moneytmp ORDER BY a <-> '21472.79' LIMIT 3; a | ?column? ------------+---------- $21,472.79 | $0.00 $21,469.25 | $3.54 $21,915.01 | $442.22 (3 rows)