-- int4 check CREATE TABLE int4tmp (a int4); \copy int4tmp from 'data/int2.data' SET enable_seqscan=on; SELECT count(*) FROM int4tmp WHERE a < 237; count ------- 297 (1 row) SELECT count(*) FROM int4tmp WHERE a <= 237; count ------- 298 (1 row) SELECT count(*) FROM int4tmp WHERE a = 237; count ------- 1 (1 row) SELECT count(*) FROM int4tmp WHERE a >= 237; count ------- 249 (1 row) SELECT count(*) FROM int4tmp WHERE a > 237; count ------- 248 (1 row) SELECT a, a <-> '237' FROM int4tmp ORDER BY a <-> '237' LIMIT 3; a | ?column? -----+---------- 237 | 0 232 | 5 228 | 9 (3 rows) SET client_min_messages = DEBUG1; CREATE INDEX int4idx ON int4tmp USING gist ( a ); DEBUG: building index "int4idx" on table "int4tmp" serially DEBUG: using sorted GiST build CREATE INDEX int4idx_b ON int4tmp USING gist ( a ) WITH (buffering=on); DEBUG: building index "int4idx_b" on table "int4tmp" serially DROP INDEX int4idx_b; RESET client_min_messages; SET enable_seqscan=off; SELECT count(*) FROM int4tmp WHERE a < 237::int4; count ------- 297 (1 row) SELECT count(*) FROM int4tmp WHERE a <= 237::int4; count ------- 298 (1 row) SELECT count(*) FROM int4tmp WHERE a = 237::int4; count ------- 1 (1 row) SELECT count(*) FROM int4tmp WHERE a >= 237::int4; count ------- 249 (1 row) SELECT count(*) FROM int4tmp WHERE a > 237::int4; count ------- 248 (1 row) EXPLAIN (COSTS OFF) SELECT a, a <-> '237' FROM int4tmp ORDER BY a <-> '237' LIMIT 3; QUERY PLAN ------------------------------------------------ Limit -> Index Only Scan using int4idx on int4tmp Order By: (a <-> 237) (3 rows) SELECT a, a <-> '237' FROM int4tmp ORDER BY a <-> '237' LIMIT 3; a | ?column? -----+---------- 237 | 0 232 | 5 228 | 9 (3 rows)