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