Это нескончаемая тема для меня, и мне интересно, могу ли я что-то упустить. По сути, я использую в приложении два типа операторов SQL:
Теперь мы говорим о некоторых запросах к таблицам с несколькими миллионами записей, объединенных до еще 5 таблиц с несколькими миллионами записей. Понятно, что мы вряд ли хотим получать их все, поэтому у нас есть два вышеуказанных метода для ограничения пользовательских запросов.
Случай 1 действительно прост. Мы просто добавляем дополнительный фильтр ROWNUM
:
WHERE ...
AND ROWNUM < ?
Это довольно быстро, как Oracle ' из-за сортировки, которая должна применяться перед пейджингом!
Мне интересно, это современная симуляция LIMIT ... OFFSET
, включая TOTAL_ROWS
в Oracle, или есть лучшее решение, которое будет быстрее по дизайну, например, с использованием оконной функции ROW_NUMBER ()
вместо псевдоколонки ROWNUM
?