fetchLazy 在 jooq 中如何工作?

How does fetchLazy work in jooq?

fetchLazy 在 jooq 中如何工作?
是否等同于使用 limit 和 offset 进行分页 select?

它们是不同的。

fetchLazy()

... returns 一个 Cursor type, which is jOOQ's equivalent of the JDBC ResultSet 类型。查询将在数据库中完全实现,但 jOOQ (JDBC) 将逐行获取行。这很有用

  • 当需要在不等待服务器和客户端之间的数据传输完成的情况下获取大型结果集时 - 与简单的 fetch() 不同,它一次性从服务器加载所有行。
  • 当客户端事先不知道他们真正想从服务器获取多少行时。

LIMIT .. OFFSET

... 将减少数据库中已有的返回行数,而它们不会出现在客户端中。这可以大大提高服务器的执行速度,因为服务器

  • 可以选择不同的执行计划 - 例如对于 LIMIT
  • 的低值,使用嵌套循环而不是散列连接
  • 不需要在很长的数据传输时间内保持打开的游标,因为只有几行通过网络传输。