I understand that there is overhead involved in parsing the strings and such. The amount of overhead was surprising to me but that's another matter. What I am really puzzled about is the difference between the statements
EXECUTE 'INSERT INTO ' || quote_ident(partition_name) || ' SELECT ($1).*' USING NEW ;
and
EXECUTE 'INSERT INTO ' || quote_ident(partition_name) || ' VALUES (($1).*)' USING NEW ;
Offhand I would say because in the first case you are doing a SELECT and in the second you are just doing a substitution.
They both do string interpolation but one is significantly faster than the other. Is there a third and even faster way?
I am using RDS so I can't really do stored procs in C.