0

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

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

我知道Java可能有办法做到这一点,任何人都可以指导我如何做到这一点。

提前致谢。

4

2 回答 2

2

文档

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

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

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

您始终可以SELECT COUNT(*) FROM使用某个平均行大小来估计结果大小......SELECT COUNT(*)您可以使用更复杂的方式代替使用:转到最后一个元素ResultSet.last()并获取行号:ResultSet.getRow()

于 2012-04-18T07:44:09.740 回答
1

我知道Java可能有办法做到这一点,任何人都可以指导我如何做到这一点。

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

JDBC 抽象对您隐藏了数据库驱动程序的实现细节,并且用于对结果集进行编码的字节数是特定于驱动程序的。

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


COUNT() 方法为我们提供查询的行数,有没有办法将其转换为字节?

一句话,没有。甚至在理论上也没有。

于 2012-04-18T07:46:01.310 回答