假设,如果我执行一个选择查询(HQL)并且它给出100K行作为结果。我想知道是否有一种方法可以在java(或任何其他语言)中加载1K块中的那些100k。查询完成后执行。 我打破它的原因是 - 我不知道那些100K结果将存储在哪里,而我在java中对它们进行处理。但我想使用较少的内存消耗。
更新 - 我不想再次点击查询。 要么我无法理解任何答案,要么你的人无法理解我的问题
答案 0 :(得分:0)
首先在两个查询中拆分您的查询。
首先是通过将选择部分更改为SELECT COUNT(o) FROM Object o
之类的内容来获取结果集的计数。
发送您现有的查询而不做任何更改。
然后首先运行count查询请求单个结果。它将直接为结果大小的Long
值。
然后计算迭代次数:
long pages = Math.ceil(count/1000);
最后但并非最不重要的是迭代计算的网页,并在获得结果之前设置偏移和限制来启动查询。