【发布时间】:2019-06-13 12:13:10
【问题描述】:
在我的 Spring Batch 程序中,我执行 SQL 查询,从返回的结果集中获取一些信息,然后将其打印到文件中。
返回的行太多,因此查询性能不佳。
SELECT *
FROM CIF
WHERE status > 1
此示例查询返回 500,000 行。
我尝试一次选择前 5,000 行:
SELECT TOP 5000
FROM CIF
WHERE status > 1
这里的问题是,如果我循环这个,我每次都会得到相同的 5,000 行。我想不出一种方法来循环并获取 5,000 行,将我需要的信息打印到文件中,然后获取接下来的 5,000 行。有什么想法吗?
【问题讨论】:
-
Define
bad performance也许你应该首先解决为什么获得 500.000 行表现不好。一种选择是查询所有 500.000,然后在循环时每 5000 行写入文件。 -
我很快就获得了 500,000 行,但无法在 Java 中将这么多行存储到内存中,它只是无法处理那么大的对象。我必须一次查询数据库 5,000 行,我无法获取所有 500,000 行并循环遍历它。
-
一次获取 5000 行是危险的,如果在执行此操作时行数发生变化怎么办? 500.000 并没有那么大,也许你应该找出它为什么表现这么差
标签: java sql-server spring spring-batch