create type cashrange as range (subtype=money);

CREATE TABLE ctest (a int, b cashrange);
INSERT INTO ctest SELECT g, cashrange(g::money, (g+1)::money)::cashrange FROM generate_series(1, 1000) g;
ANALYZE ctest;

EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF, BUFFERS OFF, SUMMARY OFF)
SELECT count(*) FROM ctest
WHERE (a,b) = ANY (ARRAY[(1, '(1,2)'::cashrange), (2, '(3,4)'::cashrange)]);

EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF, BUFFERS OFF, SUMMARY OFF)
SELECT count(*) FROM ctest
WHERE (a,b) = ANY (ARRAY[
  (1, '(1,2)'::cashrange), (2, '(2,3)'::cashrange), (3, '(3,4)'::cashrange),
  (4, '(4,5)'::cashrange), (5, '(5,6)'::cashrange), (6, '(6,7)'::cashrange),
  (7, '(7,8)'::cashrange), (8, '(8,9)'::cashrange), (9, '(9,10)'::cashrange)
  ]);
