Пожалуйста, добавьте комментарий, если для ответа на этот вопрос требуется дополнительная информация.
У нас есть запрос, который возвращает декартово произведение.Поскольку результатов много, потенциально масса гидратированных объектов.Мы хотели бы сделать простое разбиение на страницы в конце базы данных, чтобы оно было быстрым и чтобы оно получало только n результатов, начиная со строки n * страницы, где n, скажем, 100.
Проблема, с которой мы сталкиваемся, заключается вчто distinct
выполняется в запросе, чтобы возвращать только необходимые строки.Но это приводит к тому, что результаты фильтруются, и вы получаете меньше 100.
Из-за этого, даже если у нас есть номер страницы, мы не будем знать, с чего начать или остановиться, не выполнив запрос, чтобы сначала увидетьотправная точка (т. е. мы не можем использовать rownum) и, возможно, циклический цикл до тех пор, пока мы не получим 100 результатов.Это грязно.
При необходимости мы можем сделать прямой SQL, но что-то вроде рефакторинга таблицы не вариант.
В любом случае, я не могу представить, что мы первые, ктокогда-нибудь сталкивался с ситуацией, поэтому я хотел бы знать, есть ли способ сделать это.
Заранее спасибо!
РЕДАКТИРОВАТЬ: @ nicolas78 опубликовал комментарий, которыйточно описывает ситуацию.