As we know, Postgresql\'s OFFSET requires that it scan through all the rows up until the point it gets to where you requested, which makes it kind of useless for pagination
Use a CURSOR for a large resultset, will be much faster. For small result sets the LIMIT OFFSET construction works fine, but it has it's limits.
ROW_NUMBER is a nice thing, but not for pagination. You end up with bad performance because of sequential scan's.