空间/时间的问题   lazy 机制 就可以了.. 同意楼上的

解决方案 »

  1.   

    select /*+first_rows*/ a,b,c,d from (select a,b,c,d from abcd order by updatetime desc) where rownum  <=16这样有时候可以快一些
      

  2.   

    你试一试把50万条数据变成List,占用的内存有多大,跟踪一下就明白我们说什么了
      

  3.   

    String  sql = "select top 16 a,b,c,d from abcd order by updatetime desc"
    就取前16条最新的!
      

  4.   

    Sorry,忘了是oracle ! top 不行!
      

  5.   

    根据updatetime 建立倒序索引然后再用方案二如果分页的话,也最好伪列rownum 来进行分页。效率不慢,我们公司200万条大表也是按照这样的方式的。
      

  6.   

    楼主,求求你饶了我把,把50万条纪录一次拿出来然后显示在HTML里,这个HTML要多大知道吗?第2,如果你是指把50万条ITEM拿出来,没页显示10/20/30条,那你如果为了分页而分页,就算在CLIENT端控制没页显示10/20/30条这和一次取50万条有什么区别?一般一页要看多少就取多少(这个问题去看看ORACLE分页语句的应用)就是你自己写得解决方案2拉8楼的多加了/*+first_rows*/,这里用到了ORACLE的内部“解释器”相应的还有/*+all_rows*/这些用法请参照ORACLE的相关资料终结:一次拿出50万显示在CLIENT端和一次拿50万每次显示10条给CLIENT段都属于URGLY做法最好是显示多少相应的你要去取多少,这是基本原则试想有50个人用你的系统
    50个人里如果有25个人是并发,那就是25*50万在内存,HOHO,到时就是OUT OF MEMORY
    你不要用我的系统CLIENT端少做理由
    也不要告诉我你查询一次把DATARESULT放到SESSION里(真有公司这么干,很垃圾的公司)
    这是基本,显示多少相应的你要去取多少
      

  7.   

    /*+first_rows*/
    /*+all_rows*/ 
    这些属于ORACLE性能优化知识领域
    可以去钻们看看,相应的还有好几个/*+这样开头的咚咚呢
      

  8.   

    ORACLE性能优化  不妨给推荐几本好书呗  ?  谢了
      

  9.   

    给你推荐一本 就是《ORACLE SQL性能优化》 我的资源里有 我感觉还不错 
      

  10.   

    order by updatetime desc
    如果没有做反向索引,会造成全表扫描
      

  11.   

    写ora视图或是存储过程要比在java程序里面写 sql 语句好吧 ??