Lukas Eder has a single query which includes pagination data:
This is rather straightforward. It will give us page 2 out of N pages, with a page size of 10. But how do we calculate these values? How do we know we’re on page 2? How do we know the number of pages
N
? Can we calculate this without an extra round-trip e.g. to calculate the total number of actors:
-- Yuck, a second round-trip!
SELECT
COUNT(*)
FROM
actor
We can do it with a single SQL query and window functions, but before I explain how to do this, please consider reading this article on why
OFFSET
pagination is a bad thing for your performanceIf you’re still convinced
OFFSET
pagination is what you need, as opposed to keyset pagination, let’s look at how to calculate the above meta data with SQL.
Click through for the query, as well as Lukas’s explanation of how it works. But also heed that warning about keyset pagination, as it’s usually a lot better.