前端或后端的过滤分页排序



我有一个应用程序,主要显示数据库中的表数据。但是这些表需要进行分页、排序和筛选。对于排序和筛选,它们需要应用于整个列表,而不仅仅是第一个。页我脑子里有三个想法:

  • 从后端检索整个列表,然后使用javascript在前端应用分页、排序和过滤。(这种方法非常简单,我发现很多libs都可以做到)
  • 在hibernate级别上进行排序、分页和过滤。(例如,创建动态SQL以获得结果,然后使用AJAX调用呈现到前端。)
  • 在java级别上进行排序、分页和过滤。(例如,从数据库中获取整个列表,然后使用SpringPagedListHolder进行分页和排序,或者使用其他框架进行筛选。然后再次使用AJAX调用render到前端。)

哪种方式最能达到这三个数量?或者还有其他我没有想到的更好的方法。

谢谢你的帮助或提示。

您没有说明涉及多少数据。如果它很多,你当然不想到处发送,例如,不要将20GB发送到浏览器中的javascript进行渲染。

一般来说,最好减少结果集,并尽可能靠近数据库进行所有操作。但您不想对动态SQL过于狂热。您不希望用户能够对非索引数据进行巨大的查询。

我是spring的忠实粉丝,我认为如果您能将它的分页功能与Repository类中的手动优化查询相结合,那将是"最好的"。

服务器端分页几乎总是获胜。不仅仅是应用层中的服务器端,还通过数据库进行分页。从性能的角度来看,向数据库请求一个有限的子集并返回它将是最具性能的。

几年前,我在一个应用程序上工作,服务器端代码从数据库中提取所有数据(大约20万行,在业内并不多),然后通过代码进行分页。渲染页面花了30-50秒。当我切换到DB分页时,它降到了1.5秒。

现在这是服务器端分页,甚至连前端后端都没有。通过jquery(在大型数据集上),甚至是中等大小的数据集,都意味着必须将所有内容发送到浏览器。这是一项昂贵的手术。

最新更新