On Fri, Sep 12, 2008 at 9:53 AM, dan <[EMAIL PROTECTED]> wrote:

> On Thu, 11 Sep 2008 17:23:22 +0530, Amit Saxena <[EMAIL PROTECTED]>
> wrote:
>
> > Hi all,
> >
> > I am looking for a "fetch" function to fetch "n" number of records at a
> > time
> > in Perl DBI !
>
> I had to do this kind of thing to implement 'record paging' in
> Gtk2::Ex::DBI. The way I did it was in a couple of steps.
>
> 1) Run a query to *only* select primary key(s) from the records that you
> want
> 2) Store these primary keys in an array
> 3) Assemble a query to select the fields you want, and add your primary
> key(s) to the where clause
>
> So your final query would look like:
>
> select field_1, field_2, field_3
> from some_table
> where some_primary_key in ( 1, 5, 10, 24, 30 );
>
>  ... and the numbers in the 'in ( )' bit would be populated from your array
> of primary keys.
>
> This is a nice DB-neutral way of doing it, and you don't get bitten by the
> DB server returning rows in a different order each time you run a query,
> possibly returning duplicates across different 'pages' ( DB servers don't
> guarantee the order that records are returned in unless you explicitly add
> an 'order by' clause and list all relevant columns ).
>
> Feel free to check out Gtk2::Ex::DBI for a complete working example. I've
> considered moving this functionality out into a generic record paging
> module, but haven't ever really had the time to do it.
>

The only issue with this approach is that two queries needs to be run for
the same.

Considering the tables containing 1 million (and more) rows, this two pass
approach will not be good.

What others say ?

Regards,
Amit Saxena

Reply via email to