在业务层或数据库层上使用分页对数据进行排序的最佳做法是什么?

D.J*_*D.J 6 sql sorting paging

这可能是一个经常被问到的问题,但到目前为止我找不到令人信服的答案.

在我的项目中,我需要为一组大约20,000多条记录进行分页,这些记录是来自多个表的连接结果,并且需要在不同的方案中进行不同的排序.

目前,我面前有两个选项:

1,通过在数据库层上使用存储过程来完成它 ie. where dl.[row_number] between @index*@size+1 and @index*@size+@size.这样做的问题是,你必须分别为每个排序编写Store Procs.

2,在业务逻辑层上执行此操作,并在结果上方进行分页和排序.(ie. skip(), take()) 但它也不理想,因为你最终可能会检索20,000条记录,但只使用其中的10条

有没有可用的标准最佳实践?提前致谢

Ran*_*ndy 3

将此逻辑保留在数据库层。

如果使用存储过程,则将其扩展为还包括排序列,以便您可以返回正确的集合