select * from t where hs ? 'x';
####
$ pg_sql/pgsql.HEAD/hstore/create_hstore.sh
rowcount | size
----------+--------
1000000 | 249 MB
(1 row)
Time: 183.026 ms
Time: 184.673 ms
Time: 183.903 ms
Time: 0.295 ms
Time: 0.245 ms
Time: 0.274 ms
####
#!/bin/sh
schema=public
table=testhstore
t=$schema.$table
echo "
--/*
drop table if exists $t;
create table $t ( hs hstore );
insert into $t
select hstore(md5(cast(f.x as text)), cast(f.x as text))
from generate_series(1, 1000000) as f(x);
create index ${table}_hs_idx on $t using gin (hs);
analyze $t;
--*/
select count(*) as rowcount, pg_size_pretty(pg_total_relation_size( '${t}' )) as size from $t;
" | psql -q
v=9509342c6a6b283d07a3ce406b06eb1e
# discard one run for cache effects, then run three times, no index:
echo "set enable_bitmapscan=0;
\o /dev/null
select * from $t where hs ? '$v';
\o
\timing on
select * from $t where hs ? '$v';
select * from $t where hs ? '$v';
select * from $t where hs ? '$v';" \
| psql -q | grep -E '^Time:'
# discard one run for cache effects, then run three times with index:
echo "set enable_bitmapscan=1;
\o /dev/null
select * from $t where hs ? 'x';
\o
\timing on
select * from $t where hs ? '$v';
select * from $t where hs ? '$v';
select * from $t where hs ? '$v';" \
| psql -q | grep -E '^Time:'