Orcale rowid与rownum 分页查询 小记

时间:2021-06-24 20:09:53

       orcale中,常利用rownum进行分页查询,下面来回顾一下rownum分页:

有一张员工表emp,查询出所有员工名字和薪水如图:

Orcale  rowid与rownum 分页查询 小记

1.查询出员工表中第6至第10个员工的名字和薪水:

select * from 
      (select e2.* from 
                 (select e1.ename,e1.sal ,rownum rn from emp e1) e2 
       where rn<11)  
where rn>5 order by sal asc;


Orcale  rowid与rownum 分页查询 小记

2. 利用rowid分页时,先根据rownum筛选条件的区间(选出表中排第6到第10的员工),同时就得到了满足筛选条件的rowid。进而查询出在这个rowid区间内的员工信息:

select ename,sal from emp where rowid in 
       (select rid from 
               (select rid,rn from
                         (select rowid rid,rownum rn from emp )
                 where rn>5) 
        where rn<11) order by sal asc;

Orcale  rowid与rownum 分页查询 小记

            由于rowid能快速定位到一行数据,利用其用来进行分页查询时,在速度上也远优于rownum方式。