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...