Thread: Questions about LIMIT/OFFSET

Questions about LIMIT/OFFSET

From
Josh Trutwin
Date:
I'm going to be using a smarty plugin to paginate some result sets
for display in smarty templates. I was reading that using LIMIT/OFFSET
generates multiple query plans so I'm curious if it would be better
to do a:

SELECT * FROM table WHERE foo="bar" ORDER BY abc LIMIT x OFFSET y;

or just:

SELECT * FROM table WHERE foo="bar" ORDER BY abc;

and create my result set array for my templates using application ode
- increasing the likelihood of pulling the above query from the cache?
I'm sure the answer is "it depends" but curious what others do with
this?

Thanks,

Josh

Re: Questions about LIMIT/OFFSET

From
Michael Glaesemann
Date:
On Oct 19, 2007, at 16:03 , Josh Trutwin wrote:

> SELECT * FROM table WHERE foo="bar" ORDER BY abc LIMIT x OFFSET y;

The server will have to generate at most OFFSET + LIMIT rows,
returning LIMIT rows or fewer.

> SELECT * FROM table WHERE foo="bar" ORDER BY abc;

This will return all of the rows available.

Unless you're going to be returning all of the rows where
foo="bar" (e.g., executing multiple LIMIT OFFSET queries) in one
request, I should think the first query would be more performant:
fewer rows for the server to process (in the final step at least) and
less data transmitted between the server and your application.

Michael Glaesemann
grzm seespotcode net



Re: Questions about LIMIT/OFFSET

From
Josh Trutwin
Date:
On Fri, 19 Oct 2007 18:19:55 -0500
Michael Glaesemann <grzm@seespotcode.net> wrote:

>
> On Oct 19, 2007, at 16:03 , Josh Trutwin wrote:
>
> > SELECT * FROM table WHERE foo="bar" ORDER BY abc LIMIT x OFFSET y;
>
> The server will have to generate at most OFFSET + LIMIT rows,
> returning LIMIT rows or fewer.
>
> > SELECT * FROM table WHERE foo="bar" ORDER BY abc;
>
> This will return all of the rows available.
>
> Unless you're going to be returning all of the rows where
> foo="bar" (e.g., executing multiple LIMIT OFFSET queries) in one
> request, I should think the first query would be more performant:
> fewer rows for the server to process (in the final step at least)
> and less data transmitted between the server and your application.

Thanks - server and application are on the same box so not as big a
concern, but this is the way I decided to go for the time being.

Josh