Questions about LIMIT/OFFSET
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
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
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