有没有办法在 JdbcTemplate 上智能设置获取大小?

sti*_*kin 7 java spring-jdbc jdbctemplate

我有按日期范围返回报告的查询。如果日期范围很大,可能会返回 50k 行。如果日期范围很小,则可以返回 10 条记录。我发现将 fetch size 设置为 1000,当返回 50k 行时会大大加快执行时间。但是在返回 10 行时将其设置为 1000 会减慢速度并使用过多的内存。这只是一个示例,我有许多查询根据各种条件(正在运行的作业类型等)返回很少或很多行。

理想情况下,如果可以在执行查询之后(但在返回行之前)自动设置,那就太好了。

有一个更好的方法吗?

我正在使用 org.springframework.jdbc.core.support.JdbcDaoSupport.SimpleJdbcDaoSupport getJdbcTemplate().setFetchSize(1000);

Vin*_*rat 3

这是默认的获取大小。显然没有最佳值,因为正如您所描述的,这是使用的内存和数据库往返之间的权衡(默认值 100 似乎对我来说足够好)。

无论如何,您可以使用 单独设置每个结果集的获取大小ResultSet.setFetchSize()