From: Tom Lane <tgl@sss.pgh.pa.us>
To: Josh Berkus <josh@agliodbs.com>
Cc: postgres performance list <pgsql-performance@postgresql.org>
Subject: Re: Shortcutting too-large offsets?
Date: Fri, 30 Sep 2011 14:56:42 -0400
Message-ID: <11059.1317409002@sss.pgh.pa.us> (raw)
In-Reply-To: <4E860E09.7090107@agliodbs.com>
References: <4E850FC0.509@agliodbs.com>
<6843.1317393410@sss.pgh.pa.us>
<4E860E09.7090107@agliodbs.com>
Josh Berkus <josh@agliodbs.com> writes:
>> In principle, yeah, we could make it do that, but it seems like a likely
>> source of maintenance headaches. This example is not exactly compelling
>> enough to make me want to do it. Large OFFSETs are always going to be
>> problematic from a performance standpoint, and the fact that we could
>> short-circuit this one corner case isn't really going to make them much
>> more usable.
> It's not that uncommon of a corner case though; it's one which happens
> all the time in webapps which paginate. People just have to ask for a
> page after the end. It's really a question of how simple the code to
> make the optimization would be; if it would be a 5-line patch, then it's
> worth it; if it would be a 110-line refactor, no.
No, it's really a question of whether it's worth any lines at all,
and I remain unconvinced. If someone asks for the last page, or any
page near the end, it'll take just about the same amount of time as
asking for a page past the end. So any app like this is going to have
sucky performance, and kluging the corner case isn't going to help much.
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: tgl@sss.pgh.pa.us, josh@agliodbs.com
Subject: Re: Shortcutting too-large offsets?
In-Reply-To: <11059.1317409002@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox