Re: Counting records in a PL/pgsql cursor
Magnus Hagander <mha@sollentuna.net>
From: "Magnus Hagander" <mha@sollentuna.net>
To: "Richard Troy" <rtroy@ScienceTools.com>, "Merlin Moncure" <mmoncure@gmail.com>
Cc: "Martijn van Oosterhout" <kleptog@svana.org>, <pgsql-general@postgresql.org>
Date: 2006-11-03T14:33:27Z
Lists: pgsql-general
> > > I can deal with materializing the resultset, but I want > to get away > > > from the loop-a-thousand-times-doing-plus-one... > > > > i dont think its possible. note that you can make a > refcursor inside > > your plpgsql function and pass it to an sql function which > can do sql > > cursor operations on it -- i think :-)..haven't tried it yet. > > > > merlin > > ...If you know your application well enough, you might get > away with doing a select count() with the same where clause > just before entering the cursor. It _could_ of course be > wrong, though! OTOH, it would be much faster. If the only > down-side is occasionally giving users an incorrect count, > then perhaps call it a "row estimate", and let them marvel at > how accurate the estimate is most of hte time! Nope, the query is way too expensive to run it twice. (GIN scan over well over half a million rows. It's faster to do the get-as-cursor-then-loop-and-increment, I've measured that) //Magnus