Java 进程executeQuery()方法需要多长时间?
我在Oracle中有一个新的简单选择查询 如果在SQL工具上运行,需要1~3秒 但是在使用executeQuery()方法的JavaJDBC上,需要30~40秒 为什么要花这么长时间?我想解决这个问题? 请帮助新手 我只是上传我的java源代码 但无法查询上传 上传时间太长了Java 进程executeQuery()方法需要多长时间?,java,oracle,jdbc,executequery,Java,Oracle,Jdbc,Executequery,我在Oracle中有一个新的简单选择查询 如果在SQL工具上运行,需要1~3秒 但是在使用executeQuery()方法的JavaJDBC上,需要30~40秒 为什么要花这么长时间?我想解决这个问题? 请帮助新手 我只是上传我的java源代码 但无法查询上传 上传时间太长了 pstmt = con.prepareStatement(Query); pstmt.setString(1, model.B_BasicDate); pstmt.setString(2,
pstmt = con.prepareStatement(Query);
pstmt.setString(1, model.B_BasicDate);
pstmt.setString(2, GL_bfMonth);
pstmt.setString(3, GL_bfDay);
**rs = new DmdResultSet(pstmt.executeQuery()); // it takes 35 seconds**
int colCount = rs.getColumnCount();
Vector innV = null;
while(rs.next()) {
innV = new Vector();
for (int i = 1 ; i <= colCount; i++) {
innV.addElement(rs.getString(i)) ;
}
outV.addElement(innV);
}
pstmt=con.preparest陈述(查询);
pstmt固定管柱(1,型号B_基本日期);
pstmt固定管柱(2个月);
pstmt设置管柱(3,总帐日);
**rs=新的DmdResultSet(pstmt.executeQuery());//需要35秒**
int colCount=rs.getColumnCount();
向量innV=null;
while(rs.next()){
innV=新向量();
对于(int i=1;i有一些螺钉,如setFetchSize
和自动提交/事务模式。
但是,首先尝试使用更多内存运行应用程序(java-Xmx=…),
因为你正在做大量的工作
至于效率方面:
- 声明为接近其第一次使用;在循环内不会更改
它的储存
- Vector是一个非常古老的类。使用(数组)列表。它更快
选择多个字段
效率低下,尤其是对于CLOB等
因此:
//我用的是普通的,但也有更快的
connection.setTransactionIsolation(connection.TRANSACTION\u READ\u COMMITTED);
connection.setReadOnly(true);
List outV=new ArrayList();
while(rs.next()){
List innV=新数组列表(colCount);
对于(int i=1;我可以告诉您,请发布您想要执行的代码和sql查询。:)@kitonlee提供了带有query@kitonlee编辑你的答案并在那里发布你的代码,注释部分不适合这样做,你想要执行的SQL也会很有帮助..或者所有语句都很慢吗?所有SQL查询在Java上都很慢谢谢你的帮助我会试试这个谢谢你
// The normal I use, but there are faster ones
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
connection.setReadOnly(true);
List<List<String>> outV = new ArrayList<>();
while (rs.next()) {
List<String> innV = new ArrayList<>(colCount);
for (int i = 1 ; i <= colCount; i++) {
innV.add(rs.getString(i)) ;
}
outV.add(innV);
}