是否可以知道 SQL 语句返回的数据集的大小(以字节为单位)
如果从查询本身我可以得到数据的大小,那就太好了。我发现了类似使用 SQL Plus 的东西,但我无法在我的 Java 代码中使用它。
我知道Java可能有办法做到这一点,任何人都可以指导我如何做到这一点。
提前致谢。
文档:
一个
ResultSet
对象维护一个指向其当前数据行的游标。最初,光标位于第一行之前。next 方法将光标移动到下一行,并且因为它在 ResultSet 对象中没有更多行时返回 false,所以可以在 while 循环中使用它来遍历结果集。
ResultSet
不是集合,它只是用于以行方式获取数据的游标的抽象。
那么,究竟需要什么?存储结果所需的内存量?数据库中数据的大小?...?为什么会好看?
您始终可以SELECT COUNT(*) FROM
使用某个平均行大小来估计结果大小......SELECT COUNT(*)
您可以使用更复杂的方式代替使用:转到最后一个元素ResultSet.last()
并获取行号:ResultSet.getRow()
。
我知道Java可能有办法做到这一点,任何人都可以指导我如何做到这一点。
我很确定答案是没有简单的方法可以做到这一点。
JDBC 抽象对您隐藏了数据库驱动程序的实现细节,并且用于对结果集进行编码的字节数是特定于驱动程序的。
一旦结果集被具体化到 Java 堆中,理论上就可以找出它的大小。但在实践中,您必须遍历结果集中的每个堆节点......这不是一个简单的问题。
COUNT() 方法为我们提供查询的行数,有没有办法将其转换为字节?
一句话,没有。甚至在理论上也没有。