Oracle的三種分頁查詢

2021-06-21 14:08:42 字數 844 閱讀 7388

oracle的分頁一共有三種方式:

1.根據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; 

2.按分析函式來分

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

3.按rownum來分

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

其中 t_xiaoxi 為表名稱,cid  為表的關鍵字段,取按 cid  降序排序後的第 9981-9999 條記錄,t_xiaoxi  表有 70000  多條記錄。

個人感覺 1 的效率最好,3  次之,2  最差。 

乙個比較好理解的按照rownum來分頁的例子:

select * from (select a1.*, rownum rn from(select ename,job from emp) a1 where rownum<=10)where rn>=5; 

分頁結果為5-10的雇員資訊

emp為表名,enamel,job為欄位名

Oracle分頁查詢三種方式

1.根據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 r...

分頁查詢的三種思路

在開發過程中,經常做的一件事,也是最基本的事,就是從資料庫中查詢資料,然後在客戶端顯示出來。當資料少時,可以在乙個頁面內顯示完成。然而,如果查詢記錄是幾百條 上千條呢?直接乙個頁面顯示完全的話,得多長啊。這時,我們可以用分頁技術。何為分頁?效果圖如下 這裡總共查詢了100條記錄,如果一次性顯示的話 ...

sqlserver三種分頁查詢方法

假設有表student,每頁顯示10條記錄,查詢第5頁的內容。from student where idnotin 40是這麼計算出來的 10 5 1 select top 40 idfrom student order byid order by id原理 需要拿出資料庫的第5頁,就是40 50條...