我正在研究如何提高一个DB2数据库中数百万行的选择查询的性能。不幸的是,我还没有访问权限,无法测试它。
所以我试着通读文档,发现有一条语句让我很困惑。
据我所知,我必须创建一个Statement
对象,以便设置fetchSize
属性,这就是我在程序代码中看到和执行它的方式。
此外,该语句与前一句话(可以使用Statement.setFetchSize method
来设置提取大小)在某种程度上相矛盾。
有人能澄清一下或分享一下他/她使用JDBC/fetchSize/DB2的经验吗?
在IBM的文档中(参见link):
提取大小
指定从Statement对象生成的ResultSet对象的默认提取大小。此属性的数据类型为int。
Statement.setFetchSize方法可以覆写fetchSize预设值。设定fetchSize时,fetchSize属性不会影响现有的Statement对象。
fetchSize的可能值为:
0或正整数
新创建的语句对象的默认fetchSize值。如果fetchSize属性值无效,则用于JDBC和SQLJ的IBM数据服务器驱动程序会将默认fetchSize值设置为0。
**DB2BaseDataSource.FETCHSIZE_NOT_SET(-1)**数据库基本数据源
指示Statement对象的默认fetchSize值为0。此值为属性默认值。fetchSize属性与queryDataSize属性不同。fetchSize影响返回的行数,queryDataSize影响返回的字节数。
1条答案
按热度按时间yx2lnoni1#
这意味着在连接级别设置的
fetchSize
值默认用于所有未来的Statement
对象,除非它被Statement.fetchSize()
覆盖。在连接级别更改fetchSize
不会影响先前创建的Statement
。