#!/bin/bash dbname=postgres rows=1000000 psql -c "create extension if not exists pg_prewarm;" $dbname psql -c "drop table if exists t1;" $dbname psql -c "create table t1 (a int not null, b int not null, c int not null);" $dbname psql -c "insert into t1 select a, $rows - a as b, a - 1000000 as c from generate_series(1,$rows) a;" $dbname psql -c "vacuum freeze analyze t1;" $dbname psql -c "alter system set work_mem = '1GB';" $dbname psql -c "alter system set jit_above_cost = 0;" $dbname psql -c "alter system set jit_optimize_above_cost = 0;" $dbname psql -c "alter system set jit_inline_above_cost = 0;" $dbname psql -c "alter system set jit = 1;" $dbname psql -c "alter system set enable_mergejoin = 0;" $dbname psql -c "select pg_reload_conf();" $dbname psql -c "select pg_prewarm('t1');" $dbname for sql in "select count(*) from t1 inner join t1 t2 on t1.a=t2.a;" "select count(*) from t1 inner join t1 t2 on t1.a=t2.a and t1.b=t2.b" "select count(*) from t1 inner join t1 t2 on t1.a=t2.a and t1.b=t2.b and t1.c=t2.c" do echo "$sql" > bench.sql echo "Running $sql ..." for i in {1..5} do pgbench -n -f bench.sql -M prepared -T 10 $dbname | grep tps done done