Oralce 分頁 三種實現
1.分頁的三種實現 速度最快 1 > 2 > 3
2.先介紹常用的rownum
3.使用 rowid分頁(如果查詢裡面有 排序了,在最外面也要排序)
4.採用分析函式
5.介紹下rowid(為什麼rowid比rownum快)
1.第一種採用rowid 4層
2.第二種是用 rownum分頁 3 層 (oracle規定:每次查詢中 rownum只能用一次)
3.第三種是 採用分析函式來實現
2.先介紹常用的rownum
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 // 這個 在資料量比較多的時候 速度嚴重下降,所以一般人也不選這個.
5.介紹下rowid(為什麼rowid比rownum快)
rowid 確定了每條記錄在oracle中的那一個資料物件,那個資料檔案,塊,行上。相當於直接在磁碟上讀取資料.rownum 相對於是一個對映值,還需要根據這個對映值去到磁碟上找。
rowid的格式如下: (有人說根據每個段的大小可以算出每個物理檔案的大小。)
資料物件編號 | 檔案編號 | 塊編號 | 行編號 |
OOOOOO | FFF | BBBBBB | RRR |
data_object_id# | rfile# | block# | row# |
32bit | 12bit | 22bit | 16bit |
相關文章
- Java中Elasticsearch 實現分頁方式(三種方式)JavaElasticsearch
- 三種SQL分頁方式SQL
- DjangoRestFramework框架三種分頁功能的實現 - 在DjangoStarter專案模板中封裝DjangoRESTFramework框架封裝
- SSH整合實現分頁查詢(兩種方式)
- DWR(AJAX的一種Java實現)做的分頁!!Java
- elementUI實現分頁UI
- 分頁的實現
- Java專案開發中實現分頁的三種方式一篇包會Java
- 一種實現 MediaWiki 分頁面載入 JS 的思路JS
- 三種方式使用純 CSS 實現星級評分CSS
- 分頁功能的實現
- Java Web 分頁實現JavaWeb
- Mybatis分頁實現流程MyBatis
- 三種語言實現差分(C++/Python/Java)C++PythonJava
- 使用 jQuery 實現分頁功能jQuery
- web 實現分頁列印功能Web
- PHP 使用 Redis 實現分頁PHPRedis
- indexdb實現分頁查詢Index
- 使用LayUI實現AJAX分頁UI
- 47.DRF實現分頁
- Django 前端BootCSS 實現分頁Django前端bootCSS
- Hibernate 的分頁實現
- gridview中實現分頁View
- Java實現後端分頁Java後端
- MyBatis實現分頁的方式MyBatis
- MVC專案實踐,在三層架構下實現SportsStore-04,實現分頁MVC架構
- 快速排序三種實現排序
- 三種方式實現平滑滾動頁面到頂部的功能
- 分頁實現前臺後臺不同效果,分頁類引入
- 分頁實現前五後五ajax區域性重新整理方式分頁實現
- uni-app之實現分頁APP
- 用AutoLayout實現分頁滾動
- 文章內容分頁功能實現
- Tp框架實現好看分頁效果框架
- 滑動視窗式分頁的實現
- jsp分頁功能的實現JS
- DataGridView分頁功能的實現View
- 如何 用hibernate 實現分頁