Oralce 分頁 三種實現

2021-09-12 05:30:49 字數 1281 閱讀 2129

1.分頁的三種實現 速度最快 1 > 2 > 3

1.第一種採用rowid   4層

2.第二種是用 rownum分頁 3 層 (oracle規定:每次查詢中 rownum只能用一次)

3.第三種是 採用分析函式來實現

[color=red]2.先介紹常用的rownum[/color]

select * from (select row_.*,rownum rn from (select empno,ename,sal from scott.emp where sal>800 order by sal ) row_ where rownum<11)  where rn>5;

3.使用 rowid分頁(如果查詢裡面有 排序了,在最外面也要排序)

select * from emp where rowid in (select rid from (select rownum rn,rid from (select rowid rid,sal from emp where sal>800 order by sal) where rownum<11) where rn>5) order by sal; //發現不能和group by 使用,有人說是oracle的bug。所以 一般人都用 rownum分組

4.採用分析函式

select * from (select e.*,row_number() over(order by sal) rk from emp e where e.sal>800) where  rk<11 and rk>5 // 這個 在資料量比較多的時候 速度嚴重下降,所以一般人也不選這個.

[color=red]5.介紹下rowid(為什麼rowid比rownum快)[/color]

rowid 確定了每條記錄在oracle中的那乙個資料物件,那個資料檔案,塊,行上。相當於直接在磁碟上讀取資料.rownum 相對於是乙個對映值,還需要根據這個對映值去到磁碟上找。

rowid的格式如下: (有人說根據每個段的大小可以算出每個物理檔案的大小。)

[table]

| 資料物件編號| 檔案編號| 塊編號|行編號

| oooooo| fff| bbbbbb|rrr

| data_object_id#| rfile#| block#| row#

| 32bit| 12bit| 22bit| 16bit

[/table]

oralce 啟動三種方式

在startup命令中,可以通過不同的選項來控制資料庫的不同啟動步驟。1 startup nomount nonount選項僅僅建立乙個oracle例項。讀取init.ora初始化引數檔案 啟動後台程序 初始化系統全域性區 sga init.ora檔案定義了例項的配置,包括記憶體結構的大小和啟動後台...

分頁實現的三種方式

分頁問題是乙個非常普遍的問題,開發者幾乎都會遇到,這裡不討論具體如何分頁,說明一下web方式下分頁的原理。首先是查詢獲得乙個結果集 表現為查詢資料庫獲得的結果 如果結果比較多我們一般都不會一下顯示所有的資料,那麼就會用分頁的方式來顯示某些資料 比如20條 因為http的無狀態性,每一次提交都是當作乙...

三種分頁方式

1.分頁方案一 利用not in和select top分頁 語句形式 selecttop10 fromtesttablewhere idnotin selecttop20id fromtesttable orderbyid orderbyidselecttop頁大小 fromtesttablewhe...