Почему возникает проблема, если из базы данных возвращается 10 объектов? Вам по-прежнему будут возвращены только те 5 объектов, которые вас волнуют (первые 5 отбрасываются).
Я не спрашиваю, потому что я думаю, что метод setRange - это решение, которое невероятно хорошо масштабируется, но это простое и разумное решение, которое более чем адекватно во многих случаях.
Планируете ли вы разбивать на страницы очень большие таблицы или включать дорогие объединения? Если нет, то я бы хотел использовать setRange в качестве отправной точки для разбивки на страницы.