我是用的连接池
而且是使用rs.last()和rs.absolute()时变慢的
肯定跟这个无关
我想是不是跟JDBC有关
因为我调用rs.next()一万次与调用rs.absolute(10000)所用的时间是一样的

解决方案 »

  1.   

    1)在写SQL语句的时候
         尽量不用select * ,应 select a,b,c from table  ,并且注意a,b,c的顺序应与     table 中定义的次序一致
     
      2)TABLE的索引建立了吗?
      
      3)滚动游标集对于极大的查询结果,会耗费大量内存(因为数据库把结果是临时存放在缓存中),你机器的内存足够吗?   
      

  2.   

    如果用ODBC JDBC不支持STORED PROCEDURE怎么办啊?
      

  3.   

    我觉得 写得SQL 语句要能一次取出自己想要得东西。 不要一次取那么多得。
    分页得SQL 语句效率高点得。
    用上索引和帮定变量。会很快得。
    你那样做个人感觉很愚昧。
      

  4.   

    还有分析一下 SQL 语句得执行效果。
    看看是不是真正得用上了索引。才能真正得改进速度。
      

  5.   

    我把数据库改为MySQL,代码没有变,而且数据量大了三倍,也没出现延时现象
    请问这个是不是Oracle数据库的问题
      

  6.   

    测试用源代码如下
    //获取记录条数,本来是要放到后面用的,但速度慢,单独提出来了
    rs=stm.executeQuery("select count(*) from ring");
    int rscount=0;
    if(rs.next())
    {
      rscount=rs.getInt(1);
    }
    rs.close();rs=stm.executeQuery("select * from ring order by usecount desc");
    int i=0;
    //转到最后一条记录
    //while(rs.next()&&i<rscount-1)i++;
    rs.absolute(rscount-1); 
    //上一句测试时执行效果跟上面那个while循环一样??这是为什么?
    //去掉上一句后就不会出现延时
    if(rs.next())
      out.print("At the last record!!!<br>");
    rs.close();
      

  7.   

    有同感:)
    我想也有可能是JDBC Driver的问题