减小数据量咯
可以用rs.setFechSize()或者setMaxRow()

解决方案 »

  1.   

    setFechSize()效果不详,setMaxRow()和 top xxx效果差不多,可是我需要处理全部的数据,剩下的怎么办.能否第1次只返回1-1000,第2次返回1000-2000以此类推?
      

  2.   

    可以啊!你和sql分页一样处理啊
    你是什么数据库top肯定是可以的mysql有limit
      

  3.   

    忘了说我用的数据库是MSSQL,API是Microsoft的JDBC驱动变态的地方还真是多啊,
    一个查询 Select * From Table Where 字段='字符' 实际上只返回了1000多条数据,就这样都会卡死.
    而另一个查询 Select * From Table Where ID<30000 返回几万条记录都跑的很欢恐怕常规的分页也对此没有办法,我现在看来只能使用 ID>1 And ID<10000 然后 ID>10000 And ID<20000来处理了.不得其解,不知道别的数据库和API是否也有过类似的问题?
      

  4.   

    我快受不了啦~~~居然加个ID>1 And ID<10000 又卡住了,改成ID>1 And ID<200又可以,暴郁闷!
      

  5.   

    怎么说也有50分啊,别叫我给浪费了呀.最后我把数据全部导入至MySQL里面,然后用mysql的jdbcAPI一切正常,虽然不能直接用select * from table返回全部记录,因为数据太多会报OutOfMemoryError,但这是符合逻辑的,应用select * from table limit 1,1000 ... limit 1000,1000 ...(类推) 每一次返回一个offset后1000条记录就可以了.想不到mysql里居然有这么爽的分页,M$SQL还要用多次连接查询.可是不久就发现我又错了!MySQL的limit效率超级差,一条
    SELECT id  FROM Table limit 10000居然耗时10000 rows in set (7.89) sec我强烈怀疑它是一路next下去的.晕!
      

  6.   

    上面写的不够准确SELECT id  FROM Table limit 10000,10
    从10000条记录后取10条
    10 rows in set (7.97) secSELECT id  FROM Table limit 10000
    取前10000条
    10000 rows in set (7.89) sec时间消耗居然是几乎相同的
      

  7.   

    用这个函数来取数据吧
    http://dev.mysql.com/doc/mysql/en/mysql-use-result.html
    这样就不会导致OutOfMemoryError了