java - ResultSet 的最大可识别提取大小是多少

标签 java sql jdbc resultset

如标题所述,Java 识别的最大大小是多少 ResultSet目的?具体来说setFetchSize功能。

ResultSet results...;
results.setFetchSize(HUGE_VALUE);

更重要的是,如果没有“最大值”,那么提取大小的限制因素是什么?

评论

int is datatype, so I guess it would accept till MAX_INT, remaining things are driver implementation dependent.

尽管这可能与我的问题无关,但我问的是已识别的内容,而不是我可以传递给它的内容。虽然这听起来像是吹毛求疵,但这就是这个问题的本质。

更新

因为这似乎得到了一些“不是真正的问题”的接近投票。这是专门针对 Oracle JDBC 驱动程序的,ojdbc14 。正如有人在下面发布的,我正在撤回数亿的结果集,因此根据我的测试,30 或 200 远不是正确获取大小的正确答案。目前我的获取大小是 10,000,000但我无法验证数据库使用的大小是否为 1000 万。此外,我了解数据库提示的工作原理,根据我的经验,您通常可以让数据库使用您提供的提示。

最佳答案

我怀疑 setFetchSize() 方法没有按照您的想法进行操作,建议您仔细阅读以下两篇文章,并在使用 10,000,000 这样的值之前进行一些认真的分析。 This article解释了 JDBC setFetchSize 如何等同于 Oracle 的预取功能。它还演示了如何设置一些简单的分析来检查不同提取大小的影响。 This article (由第一个链接到)解释说预取没有最大值(除了我假设的 MAX_INT ),但警告不要使用大于几百的值。第二篇文章还提到了以下内容,进一步确认了setFetchSize和预取之间的联系:

Do not mix the JDBC 2.0 fetch size application programming interface (API) and the Oracle row-prefetching API in your application. You can use one or the other, but not both.

关于java - ResultSet 的最大可识别提取大小是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13882941/

相关文章:

java - 将gson创建的对象存储在greenDao中

Java GUI - 将来自其他 if 语句的值调用到 getSource() 事件中

java - 如何轻松编辑另一个类的 Java 对象

java - 将应用程序部署到 Google 云

mysql - 无法运行查询会导致 mySQL 错误 #1093 - 您无法在 FROM 子句中指定用于更新的目标表 'members'

Java jade 连接数据库

java - 新的 MySQL 驱动程序导致 java.sql.SQLNonTransientConnectionException : CLIENT_PLUGIN_AUTH is required

mysql - 如何在 phpMyAdmin 中使用 SQL 查询设置具有许多特殊字符的列值?

php - INSERT where 不存在于 php 脚本中,比较 2 个表

java - JAR 与 JDBC 连接