Oracle SQL / Java:从查询中获取返回数据集的大小

时间:2012-04-18 07:39:47

标签: java sql oracle

是否可以知道SQL语句返回的数据集的大小(以字节为单位)

如果从查询本身我可以获得数据的大小,那将是很好的。我发现了类似于使用SQL Plus的东西,但我无法在我的Java代码中使用它。

我知道有可能用它来做Java,有人可以指导我如何做到这一点。

提前致谢。

2 个答案:

答案 0 :(得分:2)

Docs

  

ResultSet对象维护一个指向其当前数据行的光标。最初,光标位于第一行之前。下一个方法将游标移动到下一行,因为当ResultSet对象中没有更多行时它返回false,它可以在while循环中用于迭代结果集。

ResultSet不是集合,它只是用于以行方式获取数据的游标的抽象。

那么,究竟需要什么?存储结果所需的内存量?数据库中的数据大小? ...? 为什么会这么好?

您始终可以SELECT COUNT(*) FROM并使用某个平均大小的行估算结果大小...而不是使用SELECT COUNT(*),您可以使用更复杂的方式:转到最后一个元素{ {1}}并获取行号:ResultSet.last()

答案 1 :(得分:1)

  

我知道有可能用它来做Java,有人可以指导我如何做到这一点。

我很确定答案是没有简单的方法可以做到这一点。

JDBC抽象隐藏了您的数据库驱动程序实现细节,用于编码结果集的字节数非常适合驱动程序。

一旦将结果集具体化到Java堆中,理论上就可以找出它的大小。但实际上,你必须遍历结果集中的每个堆节点......这不是一个简单的问题。


  

COUNT()方法给出了查询中的行数,有没有办法将其转换为字节?

总之,没有。甚至在理论上都没有。