各大資料庫分頁 及底層的區別的實現

2021-09-10 07:03:15 字數 1682 閱讀 9505

1.mysql/postgresql:從0開始計數。

例子:

第0頁, 第1頁 ,第2頁 ,。。。。。, 第n頁

資料0—-9,10——19,20——29,。。。。。,n*10——(n+1)*10-1

1.1,通式: limit 開始,多少條

1.2,select 物件 from 表 limit 頁數*頁面大小,頁面大小。舉例:select * from 表 limit n*10,10

2.oracle/sqlserver是從1開始計數。

2.0,oracle實現分頁(rownum)

例子:第1頁, 第2頁 ,第3頁 ,。。。。。, 第n頁

資料1—-10,11——20,21——30,。。。。。,(n-1)*10+1——n*10

2.0.1,oracle裡面是沒有limit關鍵字的。

2.0.2,通式:select 加上條件選擇

2.0.3,select * from student t where sno>=(n-1)*10+1 and sno<=n*10;此種寫法必須sno是連續的不能中斷。

2.0.3,select rownum,t * from student t where rownum>=(n-1)*10+1 and rownum<=n*10;此種寫法有兩種問題:

其一,如果根據sno排序,則rownum會混亂,解決方案:分開使用—>先只排序,再只查詢rownum。

select * from

(select rownum r,t.* from

(select s.* from student s order by sno asc) t rownum<=n*10 )

) where r>=(n-1)*10+1

註解: rownum<=n*10,這是優化一次查詢的個數。

其二,rownum有乙個特性,不能查詢rownum>7等型別

2.1.0 ,sqlserver實現分頁(row_number())。

2.1.1,row_number() over (字段);

select * from

(select row_number() over (sno order by sno asc) as r,* from

(select s.* from student s order by sno asc) t r<=n*10 )

) where r>=(n-1)*10+1

3,分頁的實現:

5個變數屬性:                                       舉例數字

資料總數(count),sql查詢總數。 100 /103

頁面大小(自定義), 10

總頁數(自動計算):

總頁數 = 100/10=頁面總資料/頁面大小;

總頁數 = 103/10=頁面總資料/頁面大小+1;

.。。。。。。。

總結: 總頁數 = 頁面總資料%頁面大小==0?頁面總資料/頁面大小:頁面總資料/頁面大小+1;

當前頁頁碼(使用者自定義),

當前頁的物件集合 , 學生表 list

hive簡介 與傳統資料庫的區別 大資料生態

hive是基於hadoop的乙個資料倉儲工具,用來進行資料提取 轉化 載入 etl 這是一種可以儲存 查詢和分析儲存在hadoop中的大規模資料的機制。hive資料倉儲工具能將結構化的資料檔案對映為一張資料庫表,並提供sql查詢功能,能將sql語句轉變成mapreduce任務來執行。hive的優點是...

MySQL的資料庫引擎的型別及區別

mysql的資料庫引擎的型別 你能用的資料庫引擎取決於mysql在安裝的時候是如何被編譯的。要新增乙個新的引擎,就必須重新編譯mysql。在預設情況下,mysql支援三個引擎 isam myisam和heap。另外兩種型別innodb和berkley bdb 也常常可以使用。isam isam是乙個...

MySQL的資料庫引擎的型別及區別

mysql的資料庫引擎的型別 你能用的資料庫引擎取決於mysql在安裝的時候是如何被編譯的。要新增乙個新的引擎,就必須重新編譯mysql。在預設情況下,mysql支援三個引擎 isam myisam和heap。另外兩種型別innodb和berkley bdb 也常常可以使用。isam isam是乙個...