gpt4 book ai didi

java - 分块加载 SELECT 查询的实际数据(无需再次执行相同的查询)

转载 作者:行者123 更新时间:2023-11-29 12:26:49 24 4
gpt4 key购买 nike

假设,如果我执行一个选择查询 (HQL),它会给出 100K 行作为结果。我想知道是否有一种方法可以在查询完成后以 java(或任何其他语言)加载 1K block 中的 100k。我将它分成几 block 的原因是——我不知道这 100K 个结果将存储在哪里,而我在 java 中对它们进行处理。但我想使用较少的内存消耗。

  1. 执行查询(使用 hql hibernate 条件)(假设 100K 行结果)
  2. 在其中选择前 1K(不在 JVM 或其他地方的内存中加载其他 99K,例如在 hibernate 中延迟加载)
  3. 过程
  4. 选择下一个 1K
  5. 从 (2) 开始重复

更新 - 我不想再次点击查询。要么我无法理解任何答案,要么你们无法理解我的问题

最佳答案

首先将您的查询分成两个查询。

第一个是通过将选择部分更改为类似SELECT COUNT(o) FROM Object o 来获取结果集的计数。

发送您现有的未更改的查询。

然后首先运行计数查询并请求单个结果。它将直接是一个带有结果大小的 Long 值。

然后计算你的迭代次数:

long pages = Math.ceil(count/1000);

最后但并非最不重要的一点是遍历计算出的页面,并在获取结果之前通过设置 Offset 和 Limit 来启动查询。

关于java - 分块加载 SELECT 查询的实际数据(无需再次执行相同的查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com