Jeff Boes <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... > At some point in time, [EMAIL PROTECTED] (Mike Moran) wrote: > > >Hi. I currently have a fairly large query which I have been optimizing > >for later use in a function. There are things in the query which I > >have been keeping constant whilst optimizing, but which are variables > >in the function. When I run this query as sql, with the `variables' > >constant, I get a runtime of about 3 or 4 seconds. However, when I > >place this same sql in an sql function, and then pass my constants > >from before in as arguments, I get a runtime of about 215 seconds. > > [ ... ] > > My first guess would be that the indexes being used in the query are > mis-matching on data type compared to your function arguments. For instance, [ ... ]
Hi. I think it is something like this that is going on. A couple of the variables are dates which are specified in the table as 'timestamp without time zone', whilst the function was using 'timestamp with time zone'. I confirmed the slowdown by casting the types to the 'slow' type in the original query. However, when I change the signature of the function and do a cast of the variable within the function body I still get the same speed. I even cast the arguments to the function given at the psql prompt and still I get the same speed. I will have to sanity-check this again tomorrow (posting from home) but I couldn't see anywhere else that I could force the type to be the same as that specified on the table. Many thanks, -- Mike ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])