db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fantry, John" <JFan...@analogic.com>
Subject RE: Paginating result sets
Date Wed, 19 Jul 2006 19:01:20 GMT

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.

Mime
View raw message