Java 进程executeQuery()方法需要多长时间?

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,

我在Oracle中有一个新的简单选择查询

如果在SQL工具上运行,需要1~3秒

但是在使用executeQuery()方法的JavaJDBC上,需要30~40秒

为什么要花这么长时间?我想解决这个问题?

请帮助新手

我只是上传我的java源代码 但无法查询上传 上传时间太长了

    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);
}