600万条海量记录啊!!!!!!大家有高性能的分页存储过程帮我解决分页吗??要不我要在公司过年了!!!!哇哇。

解决方案 »

  1.   

    忘记说了。我的数据库是ORACLE。
      

  2.   

    表TABLENAME按ORDERBYFIELD建立索引,
    select /*+ first_row */ fields
        from TABLENAME
        where rowid in (select rid from (select rownum rno, rid
                                             from (select rowid rid from TABLENAME
                                                       order by ORDERBYFIELD desc)
                                             where rownum <= 800000 )
                            where rno >= 799981);
      

  3.   

    rowid + first_row提示应该是不错的了,你怎么觉得楼上的性能不好?提出依据,
    况且600万也不是什么海量
      

  4.   

    rowid + first_row rowid是行主键吗?first_row是什么啊??
    600万条还不多!!!!!!
      

  5.   

    rowid : 取数据时候直接定位数据的物理地址(哪个file,segment,block)
    就想C里面取数组数据,用指针比用下标要快(直接寻址)
    first_row: 提示系统以最快返回方式返回数据
    600万条:   比较多,不算海量
      

  6.   

    那first_row 怎么用啊?楼上的。。请指出哦。。
      

  7.   

    2楼的效率应该不错了。
    ps:600w的记录数对于很多应用来说真的只能算不大的数据量了^_^
      

  8.   

    可怜的搂主其实2楼的性能是比较好的了,由于分页使用,所以in中间的数目一般不会太多。而且还可以加个提示优先解析in子句.
      

  9.   

    请问哪个地方有 类似 /*+ first_row */这种语法的资料,谢谢
      

  10.   

    利用  GOOGLE  搜一下就出来了。
      

  11.   

    要全部select出来吗~~??那你就准备过年吧~
      

  12.   

    大家难道真的就没有比较好的存储过程吗?????
    高手都回家过年了吗?????????????????????哎\!!
    中国可能没人能解决海量数据问题了吧。。!!!!!!!!!!!!!!!这话怎么这么恶心?想激大家告诉你吗?上亿才能叫海量,SQL语句速度最快。