日期:2014-05-17  浏览次数:20789 次

oracle分页查询
--优化分页查询语句
select m.*
  from (select rownum rownnum_, t.* from (select * from sales m where 1 = 1 order by m.cust_id) t where rownum < 16) m  
 where rownnum_ > 2;
 
 --没有优化分页查询语句
 select m.*
  from (select rownum rownnum_, t.* from (select * from sales m where 1 = 1 order by m.cust_id) t ) m where rownnum_<16  
 and rownnum_>2 ;

这是我在ORACLE书上面看到的查询 例子。
  一个是 优化后的 一个是没有优化的。
  第一个查询 只用了 1S 第二个查询是7S 
  但是第二个没有优化的查询 我能理解 觉得是我想要的 分页
 但是第一个 虽说快 但是 感觉结果只是达到了分页效果 。。
  问下 大家分页是怎么做到的呢?
  这是ORACLE 自己的表 SH用户的

------解决方案--------------------
select *
from (select m.*,row_number() over(order by m.cust_id) rn from sales m )
where rn between 3 and 15