orcale中,常利用rownum进行分页查询,下面来回顾一下rownum分页:
有一张员工表emp,查询出所有员工名字和薪水如图:
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;
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;
由于rowid能快速定位到一行数据,利用其用来进行分页查询时,在速度上也远优于rownum方式。