关闭

oracle分页

217人阅读 评论(0) 收藏 举报

 

1.rownum来分

select * from (select t.*,rownum rn from(select * from t_xiaoxi order by cid desc)t where rownum<10000) where rn>9980; 执行时间0.1

 

2.根据rowid来分

select * from t_xiaoxi where rowid in (select rid from (select rownum rn, rid from(select rowid rid, cid from t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc; 执行时间0.03

 

大致思路如下:

 

查询表的所有内容 

select * from table1

查询行号小于20

select rowid rid,rownum rn from (select * from table1) a where rownum<20

查询行号大于15

select b.rid from (select rowid rid,rownum rn from (select * from table1) a where rownum<20) b where b.rn>15

查询所有的结果在rowid存在于结果中的

select * from table1 where rowid in(select b.rid from (select rowid rid,rownum rn from (select * from table1) a where rownum<20) b where b.rn>15)

 

 

3.按分析函数来分

select * from (select t.*, row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980; 执行时间1.01

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:281524次
    • 积分:8444
    • 等级:
    • 排名:第2300名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:4条
    最新评论