Определенно в БД для предпочтения, если это вообще возможно.
Иногда вы можете немного смешаться, например, если у вас есть результаты, возвращаемые функцией базы данных (не хранимая процедура, функции могут быть частями больших запросов способами, недоступными хранимым процедурам), тогда вы можете использовать другую функцию. order и paginate, или, возможно, Linq2SQL или аналогичный вызов для страницы результатов из указанной функции, выдающий правильный SQL по мере необходимости.
Если вы, по крайней мере, можете выполнить упорядочивание в базе данных и, как правило, захотите только первые несколько страниц (довольно часто это происходит при реальном использовании), то вы можете по крайней мере иметь разумную производительность для этих случаев, так как достаточно строк. чтобы перейти к нужным строкам, а затем взять их, необходимо загрузить их из БД. Вам, конечно, все еще нужно проверить, что производительность является разумной в тех редких случаях, когда кто-то действительно ищет страницу 1,2312!
Тем не менее, это только компромисс для случаев, когда подкачка действительно очень сложна, как правило, это всегда страница в БД, за исключением случаев, когда это либо чрезвычайно сложно по какой-то причине, либо общее количество строк гарантированно не будет низким.