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