I have a talk with Alex Stanev about known issue that block indexes - bad param types
postgres=# do $$ declare _id numeric = 777722; begin perform * from bigtable where a = _id; end; $$; DO Time: 108,775 ms postgres=# do $$ declare _id numeric = 777722; begin perform * from bigtable where a = _id; end; $$; DO Time: 106,111 ms postgres=# do $$ declare _id int = 777722; begin perform * from bigtable where a = _id; end; $$; DO Time: 1,522 ms postgres=# do $$ declare _id numeric = 777722; begin perform * from bigtable where a = _id; end; $$; DO Time: 108,287 ms