请问大家是怎么分页的?一般用什么存储过程,,能支持多表联合查询的,网上搜了下,好像资料很少,谢谢。

解决方案 »

  1.   

    初学oracle,请问有代码可以参考么
      

  2.   

    用rownum进行分页。。楼主试一下就知道是怎么一回事了。。在此我就不多说了
      

  3.   

    SELECT a.*, ROWNUM rn   FROM (SELECT * FROM t_employees ORDER BY first_name) a  WHERE ROWNUM <= 500 AND ROWNUM > 480
      

  4.   

    rownum对与>条件是默认为false的,因为rownum默认是0
    应该这样写:
    select * from t_employees where ROWNUM<501 minus select * from t_employees where ROWNUM<479
    查出的结果集是480~500
      

  5.   

    select * from (select rownum r,tb.* from tb where rownum <=40) t where t.r > 30上面这个在没有排序的情况下速度还是很快的,但是现实中我们取数据往往是最新的数据,那么就需要对表进行排序,将上面的修改成如下select *  from (select * from (select rownum r,ttt.* from (select tb.* from tb order by tb.id desc) ttt) where rownum <=40)) t where t.r > 3010万条数据单表查询需要5秒左右,
    我测试 select tb.* from tb order by tb.id desc ,主要时间就是用在排序上了。 请问怎么样优化?
      

  6.   

    我记得在mssql里面  select top 10 from tb order by id desc 速度还是很快的,oracle为什么这么慢呢
      

  7.   

    select *  from (select rownum r, tb.* from tb where rownum <=40 order by tb.id desc) t where t.r > 30
    不需要嵌套那么多吧
      

  8.   

    select   /*+FIRST_ROWS*/   *   from   t     
      where   rowid   in     
      (   select   rid   from     
      (   select   rownum   rno,rid   from     
      (   select   rowid   rid   from   t     
      where   category   =   20     
      order   by   category,product_name     
      )   where   rownum   <=   5000     
      )   where   rno   >=   4981     
      )