db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Flavio Palumbo" <f.palu...@silmasoftware.com>
Subject R: Paginating result sets
Date Thu, 20 Jul 2006 07:16:26 GMT
Hi,

I tested, briefly, these stetements on DB2/400 and it works fine (I found it
on a book, never used it in production) :

select * from (
      select * from (
            select * from eurofile/anatit
                     fetch first 35 rows only) as t1
               order by atcodi desc fetch first 5 rows only) as t2
         order by atcodi

 as you increment the number of rows in the inner select (35) you move
forward the cursor on the table, viewing always 5 rows ( well I'm not a SQL
guru ... I think tou can understand the code better of me).

HTH

Flavio



> -----Messaggio originale-----
> Da: Fantry, John [mailto:JFantry@analogic.com]
> Inviato: mercoledì 19 luglio 2006 21.01
> A: Derby Discussion; derby@segel.com
> Oggetto: RE: Paginating result sets
>
>
>
> I have tried a scrollable cursor and it is waaaaaaaaay too slow.  The
> 'absolute()' method on the ResultSet object takes so long to return I
> have to show an hour glass icon and the user has to wait an eternity.
> In this case the result set had over 2 million rows.  I have a
> requirement to support a huge amount of data, so I'm trying to find a
> solution that performs better.  I could try a different database like
> PostgreSQL, but I prefer an embedded solution.
>
> I have considered using a temp table with row id as you've suggested,
> but haven't tried it yet.  I'm guessing the performance will be poor,
> but there is only one way to find out.
>
> -John
>
> -----Original Message-----
> From: Michael Segel [mailto:derby@segel.com] Sent: Wednesday,
> July 19, 2006 2:54 PM
> To: Derby Discussion
> Subject: Re: Paginating result sets
>
> Did you try to use a scrollable cursor?
> Or how about storing your result set in to a temp table with some sort
> of row id?
>
> Both of these solutions are pretty much database independent, assuming
> of course that they support the concept of cursors...
>
> If you're going to use either solution, you're also going to need to
> consider what happens when you time out the user and you need to free up
> resources.
>
> HTH
>
> -G
>
> On Wednesday 19 July 2006 1:24 pm, Fantry, John wrote:
> > I need some help figuring how to paginate result sets with Derby.  I
> > have scanned the list archives and have found one similar thread that
> > never received a complete answer from May 2005.
> >
> > From what I understand this pagination behavior is possible in MySQL
> by
> > using the 'LIMIT' query.  This will allow me to select the first 100
> > rows, the second 100 rows, or any arbitrary chunk of rows that may be
> > part of the result set.
> >
> > I understand that Derby does not support the LIMIT query.  I also
> > understand that the JDBC Statement class has two methods that are
> > related (setFetchSize() and setMaxRows()), but they do not support the
> > pagination behavior I desire.
> >
> > So let's say that a given SELECT statement will return 1000 rows.  How
> > do I create a SELECT statement that will only return me rows 600 -
> 699?
> > Having spent a lot of time searching through Derby docs I have
> concluded
> > that this is not possible in Derby, but I am hoping I am wrong.
> >
> > Does anyone know how to do this, or do I have to continue my search
> for
> > an embedded database that supports LIMIT?
> >
> > Thanks,
> > -John
> >
> >
> > ****************************************************************
> > The information transmitted in this message is confidential and may be
> > privileged.  Any review, retransmission, dissemination, or other use
> of
> > this information by persons or entities other than the intended
> recipient
> > is prohibited.  If you are not the intended recipient, please notify
> > Analogic Corporation immediately - by replying to this message or by
> > sending an email to DeliveryErrors@analogic.com - and destroy all
> copies of
> > this information, including any attachments, without reading or
> disclosing
> > them.
> >
> > Thank you.
>
> -- --
> Michael Segel
> Principal Michael Segel Consulting Corp.
> derby@segel.com
> (312) 952-8175 [mobile]
>
> ****************************************************************
> The information transmitted in this message is confidential and
> may be privileged.  Any review, retransmission, dissemination, or
> other use of this information by persons or entities other than
> the intended recipient is prohibited.  If you are not the
> intended recipient, please notify Analogic Corporation
> immediately - by replying to this message or by sending an email
> to DeliveryErrors@analogic.com - and destroy all copies of this
> information, including any attachments, without reading or
> disclosing them.
>
> Thank you.
>


-----------------------------------------------------------
Il presente messaggio non costituisce un impegno contrattuale tra SILMA S.r.l. ed il destinatario.
Le opinioni ivi espresse sono quelle dell'autore.
SILMA S.r.l. non assume alcuna responsabilita riguardo al contenuto del presente messaggio.
Il messaggio è destinato esclusivamente al destinatario.
Il contenuto e gli allegati sono da considerarsi di natura confidenziale

Nel caso abbiate ricevuto il presente messaggio per errore siete pregati di comunicarlo
alla casella segreteria@silmasoftware.com.


Mime
View raw message