oracle分页

1.根据ROWID来分
select * from student where rowid in (select rid from (select rownum rn, rid from (select rowid rid,cid from student order by cid desc) where rownum<10000) where rn > 9980) order by cid desc;
执行时间0.03秒
2.按分析函数来分
select * from (select a.*, row_number() over(order by cid desc) rk from student a ) where rk < 10000 and rk > 9980;
执行时间1.01秒
3.按ROWNUM来分
select * from (select t.*, rownum rn from (select * from student order by cid desc) t where rownum < 10000) where rn > 9980;
执行时间0.1秒
测试数据student表有7万多条。
结论:1效率最高,3次之,2最差

posted @ 2018-01-29 21:19  秦先生的客栈  Views(102)  Comments(0Edit  收藏  举报