用jdbcTemplate分页

xyb*_*rek 5 java sql spring jdbc

我们现在面临的问题之一是处理从数据库中获得的大型ResultSet的分页。

当前,作为SQL存储过程返回的行调用jdbcTemplate.query范围从100K到300K,并且分页在该extractData方法内完成。

用户显示的页面只有20行。

这非常慢,有没有一种方法可以使用存储过程的结果来获取数据页jdbcTemplate

ger*_*tan 2

我相信 JdbcTemplate 没有特定的分页功能。然而,即使它确实如此,也可能无法帮助您的代码运行得更快。

通常,面向用户的页面大小不超过 200 行,因此查询 100-300K 行显得过多并且浪费大量内存。

您需要首先决定使用哪种分页策略。两种常见的策略是查询前 N 页,并将其存储在临时缓存中,或者仅查询足以填充一个页面大小的内容(例如:200 行),并且仅在用户请求时才查询接下来的 200 行。

您还需要确定缓慢的真正原因是什么。行大小是一个因素,但不是唯一的因素。您必须分析您的模式结构、索引、查询连接等。

请记住,在正常使用情况下 - 尽管您可以向用户呈现最多 10000 个页面,但典型用户不太可能浏览所有这些页面 - 也许只有前 5-10 个页面很重要 - 因此,如果您可以,将结果集限制为较小的数字会更有意义