I wrote:
> I get about 6900 vs 12800 msec, so for a simple pre-planned query
> it's not quite a 50% overhead.

However, that was yesterday ;-).  I did some profiling and found some
easy-to-knock-off hotspots.  Today I'm measuring about 25% overhead
for a simple SELECT, which I think is entirely acceptable considering
the cleanliness of definition that we're buying.

I changed my test cases to be

create or replace function foo(int,int) returns int as '
declare x int;
begin
  for i in 1 .. $1 loop
    select into x unique1 from tenk1 where unique2 = $2;
  end loop;
  return x;
end' language plpgsql;

create or replace function foos(int,int) returns int as '
declare x int;
begin
  for i in 1 .. $1 loop
    begin
      select into x unique1 from tenk1 where unique2 = $2;
    exception
      when others then null;
    end;
  end loop;
  return x;
end' language plpgsql;

so as to minimize the extraneous overhead --- I think this is a harder
test (gives a higher number) than what I was doing yesterday.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to