PreparedStatement.setFetchDirection(ResultSet.FETCH_FORWARD)对Oracle有影响吗?
我的项目是为一家大型电力公司的电力设施和线路维护系统升级数据库和应用服务器。我们现在正在测试新的设置(Oracle12c和JBoss 7)。
有时,对数据库的查询需要几分钟才能得到答案。我建议使用PreparedStatement.setFetchSize(int rows),其中行是用户希望在其屏幕上看到的信息的行数。在Stackoverflow和其他地方的许多帖子都说setFetchSize()对于优化网络连接很重要。
但我注意到PreparedStatement也有setFetchDirection()功能。有FETCH_FORWARD,FETCH_REVERSE和FETCH_UNKNOWN。我已经看到很多次提到这一点,但我还没有看到任何人说这是一个多么大的好处。
如果这有助于了解情况-这家电力公司为3000万客户提供服务,有数十年的记录(从核电站到电线杆)。该服务的用户将是维护人员和办公室工作人员,包括公司和分包商的人员。因此,用户的计算机技能和耐心可能无法容忍等待3分钟才能找到他们需要维修的变压器的位置。
发布于 2016-03-07 09:17:32
甲骨文说
“JDBC2.0标准允许预先指定用于处理结果集的方向,这允许JDBC驱动程序优化其处理。”
然而,甲骨文也说“Oracle JDBC驱动程序只支持前向预设值”ResultSet.FETCH_FORWARD
“不支持值ResultSet.FETCH_REVERSE和ResultSet.FETCH_UNKNOWN。”
因此,我的猜测是,如果您使用的是JDBC2.0标准驱动程序,那么当您想要查找过期的维护工作时,可以通过使用setFetchDirection(ResultSet.FETCH_REVERSE)来优化fetch。但是,如果您使用的是Oracle JDBC驱动程序,那么您就不走运了。
(如果我错了,反对我--我知道这会改善你的极客信条。)
https://stackoverflow.com/questions/35790000
复制相似问题